Skip to content

Latest commit

 

History

History
458 lines (338 loc) · 36.1 KB

faq.zh.md

File metadata and controls

458 lines (338 loc) · 36.1 KB

常提问题

WebTorrent 是什么?

WebTorrent是第一个在浏览器中,运行的种子客户端。 是的,没错。浏览器。

它完全用 javascript 编写,并使用WebRTC,做到真正的点对点传输。不需要浏览器插件、扩展或安装包。

使用开放的 Web 标准,WebTorrent 将网站用户连接在一起,形成一个分布式的、分散的浏览器到浏览器网络,以实现高效的文件传输。

有啥,这很酷吗?

想象一下,像 YouTube 这样的视频网站,若访问者能帮助,持有网站内容。 紧接着,支持 WebTorrent 网站的用户越多,网站的速度越快,抗性越强。

浏览器到浏览器的通信,排除中间人,让人们用自己的方式交流。没有更多的客户端/服务器 —— 只是一个对等网络。WebTorrent 是通往再分散性网络的第一步。

我们对网络的编码方式将,决定我们的网络生活的方式。所以,我们需要将我们的价值烘焙到代码中。将表达自由,变成需要,融入我们的代码中。隐私应该融入我们的代码中。自由获取所有知识。但是如今,这些理想,并没有嵌入到 Web 。

-Brewster Kahle,互联网档案的创始人(来自锁住了 Web 的开放性

WebTorrent 有哪些使用示例吗?

WebTorrent 最令人兴奋的用途之一是对端-辅助传输。 非盈利项目维基百科以及互联网档案,可以通过让访问者加入,来降低带宽和托管成本。流行的内容,可通过浏览器到浏览器,提供服务,速度快且成本低。少量的访问内容,通过 HTTP,由源服务器可靠地提供服务。

还有令人兴奋的商业用例,从 CDN 到 应用程序发送。

WebTorrent 具有巨大的商务潜力,可以通过内部基础设施和外部封闭用户通信的应用程序,彻底改变客户端-服务器的传统概念。WebTorrent 已经从一个“想法”变成了一个科学实验,现在正处于可行的边缘。这真的很酷。

-Chris Kranky(来自“WebTorrent:重新思考传输”

现今,谁使用 WebTorrent?

WebTorrent 仍然是相当新的,但它已经被用在了,很酷的方式上:

WebTorrent Desktop 流媒体 Torrent 应用程序。给 Mac、Windows 和 Linux。(源代码
Instant.io 通过 WebTorrent,传输流文件(源代码
GitTorrent 使用 BitTorrent 和 Bitcoin 的 分散式 Github(源代码
PeerCloud 利用 WebTorrent 的无服务器网站(源代码
File.pizza 在浏览器中,免费进行点对点文件传输(源代码
Webtorrentapp 从 Torrents 启动 Web 应用程序的平台
Fastcast 带一些视频,的画廊网站(源代码
Colored Coins 在区块链上,创建数字资产的开放协议(源代码
Tokenly Pockets 基于 WebTorrent 元数据的数字令牌发布(源代码
βTorrent 功能齐全的 WebTorrent 浏览器客户端(源代码
Zapsnap 浏览器,共享临时点对点屏幕截图(源代码
PeerWeb 从 Torrent 获取,并呈现静态网站
Niagara 带字幕的视频播放器 (zipped.srt(s))。
Vique 视频播放器队列,以共享视频
YouShark 用于 WebTorrent 的 Web 音乐播放器(源代码
Peerify 为你的文件,即时网络播种
Instant-Share 通过 WebTorrent ,共享文件
P2PDrop 在对端之间,安全共享文件(源代码
Twister 分散式微博服务,使用 WebTorrent 作为媒体附件(源代码
PeerTube Web 浏览器中,分散式视频流平台的原型(源代码
Cinematrix 流式播放,您最喜爱的免费内容
webtorrent-cljs WebTorrent 的 ClojureScript 包
Squidlink 不使用云,将文件从 A 传输到 B(源代码
Web2web 无服务器和无域网站,可通过 Torrents 和比特币区块链更新(源代码
Magnet Player 直接从浏览器,传输视频流(源代码
PeerFast 第一次 P2P 网速测试(源代码
TorrentMedia 功能齐全的 WebTorrent 桌面客户端
Gaia 3D Star Map 200 万颗星,使用 WebGL、WebVR 和 WebTorrent 进行 3D 渲染
Watchtor 网上种子观看的极简方法(源代码
CacheP2P 高度分布式,缓存平台(源代码
DropClickPaste 拖放简单内容共享
LocalFiles 通过将文件,固定到地理位置,来共享文件
WebTorrent Google Cast (WTGC) 在谷歌广播设备上,播放 WebTorrent 媒体(源代码
WebTorrent Player 由 Angular2 和 Ngrx 构建的 WebTorrent 播放器(源代码
CodeDump 基于 WebTorrent 的,代码粘贴程序(源代码
Lunik-Torrent WebTorrent 下载程序和文件管理器。(源代码
BitChute 分散的视频流社交网络
Planktos 允许网站通过, BitTorrent 提供静态内容(源代码
SuperQuickShare 使用 WebTorrent 和 QRCodes 在设备之间,快速共享文件(源代码
P2P-CDN webtorrent 优雅降级的cdn
PearPlayer 基于多源 WebTorrent 的多协议 P2P 流媒体播放器
Tcloud 文件共享,和 种子下载
Webtorrent-webui 具有简单 Web 界面的 WebTorrent 客户端,远程使用
CineTimes 公共域电影,流媒体网站
Bitlove.org 您最喜欢的 BitTorrent 播客
lofiTorrent 在线和离线 Torrent 浏览器客户端
Live-torrent WebTorrent 支持的直播流解决方案的简单实现(源代码
CDNBye 使用类似于 BitTorrent 的协议,通过点对点网络,实现 WebRTC 数据通道,来扩展实时/VOD 视频流。
Files.fm 快速文件共享,和免费增值云存储服务,使用 P2P 技术,加速无限下载和文件分发。
imgest 使用 JavaScript 和 WebTorrent 构建的无服务器共享图像库。
Bugout 在浏览器选项卡中,生成和运行后端 Web 服务。
P2P Media Loader 用于 hls.js 和 shaka 播放器的引擎,支持通过 hls 或 dash 协议,共享实时和 VOD 流的 P2P。
Cheff 在设备之间,共享食物配方。source code
**您的应用程序-用你的网址!发送请求

WebTorrent 生产替代方案

这里还列出了 WebTorrent 支持的集中式服务替代方案:WebTorrent 复刻产品

WebTorrent 是怎么工作的?

WebTorrent 协议的工作原理与BitTorrent 协议相仿,除了它使用WebRTC而不是(TCP)传输控制协议/uTP作为传输协议。

为了支持WebRTC 的 连接模型,我们对跟踪协议做了一些修改。因此,基于浏览器的 WebTorrent 客户端或 **“Web 对端/对等端”**只能连接到支持 WebTorrent/WebRTC 的其他客户端。

我们所更改的协议,将作为BEP发布。 在编写规范之前,可以查看bittorrent-tracker包。

一旦连接了对等端,用于通信的有线协议,与正常 BitTorrent 中的协议完全相同。这应该会让,现有流行的 Torrent 客户端(如 Transmission)和 Autocurrent ,更容易添加对 WebTorrent 的支持。Vuze 已经支持了 WebTorrent!

WebTorrent network diagram

那我要怎么开始了?

要开始使用 WebTorrent,只需在网页包含 webtorrent.min.js脚本。如果你使用browserify你可以npm install webtorrentrequire('webtorrent').

下载种子 ,并将其添加到页面,会很容易。

var client = new WebTorrent();

var torrentId =
  'magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10&dn=Sintel&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fsintel.torrent';

client.add(torrentId, function(torrent) {
  // Torrents can contain many files. Let's use the .mp4 file
  var file = torrent.files.find(function(file) {
    return file.name.endsWith('.mp4');
  });
  file.appendTo('body'); // append the file to the DOM
});

它支持视频、音频、图像、PDF、Markdown,还有更多正要从口袋拿出来。有其他直接访问文件内容的方法,包括作为 node-样式的流媒体、Buffer 或 Blob url。

可以传输流式视频和音频内容,即在下载完整文件之前,开始播放。播种也能工作 —— 能给予 WebTorrent 动态地,从网络按需获取所需的种子片段。

WebRTC 是什么?

WebRTC(Web 实时通信(Real-Time Communication))是由万维网联盟(W3C)定义的一个 API,用于支持浏览器到浏览器的应用程序,如语音呼叫、视频聊天和 P2P 文件共享,而无需浏览器插件。

WebRTC 的RTCDataChannelAPI 允许直接将数据从一个浏览器传输到另一个浏览器。这和WebSocketXMLHttpRequest不同,因为它们是为与服务器(即客户端-服务器模型)通信而设计的。而数据通道(RTCDataChannel)允许直接浏览器到浏览器的连接.

这是一场革命。以前,网站从未能以超低延迟、加密,点对点地直接将用户连接到彼此。这将在医疗、教育、科学等领域,实现下一代应用。WebTorrent 只是一个例子。

WebRTC能在任何地方工作,和浏览器支持非常好。Chrome火狐Opera ,不管是 PC 还是 Android,以及微软 EdgeSafari都会有支持。

您可以在以下网址,了解有关 WebRTC 数据通道的更多信息:HTML5 Rocks.

WebTorrent 客户端能与正常 BitTorrent 客户端连接吗?

在浏览器中,WebTorrent 只能,下载由 WebRTC 支持的 Torrent 客户端的种子。

现在,我们知道这些支持 WebRTC 的 Torrent 客户端:

WebTorrent Desktop 开源的流式 Torrent 客户端。给 Mac、Windows 和 Linux。
Vuze 功能强大、功能齐全的 Torrent 客户端
Playback 开源 javascript 视频播放器**(超级酷!)**
webtorrent-hybrid node.js 包(命令行和 api)
Instant.io 网站中的简单 WebTorrent 客户端
βTorrent 功能齐全的浏览器 WebTorrent 客户端(源代码
TorrentMedia 桌面 WebTorrent 客户端
即将推出更多产品-发送公关将您的客户添加到列表中!

关于 webtorrent-hybrid 的 小只是

在 node.js 中,webtorrent-hybrid可以从 WebRTC 对等端或 TCP 对等端(即普通对等端)下载种子。您可以将 WebTorrent 用作命令行程序,或用作 node.js 包编程。

安装webtorrent-hybrid在终端中,运行以下命令(添加-g安装命令行程序的标志,省略该标志,会以本地安装):

npm install webtorrent-hybrid -g

注意:如果您只需要在浏览器中使用 webtorrent(webrtc 原生可用的),则用webtorrent替代,它的安装速度更快,因为它,不需要安装 WebRTC (node)实现。

不同网站的 WebTorrent 客户端能连接到彼此吗?

当然可以!**WebTorrent 在整个 Web 上工作。**在一个域上运行的 WebTorrent 客户端,可以连接到任何其他域上的客户端。没有哭泣!

同源策略,不适用于 WebRTC 连接,因为它们不是客户端到服务器的连接。浏览器到浏览器的连接,需要两个网站的合作(即,WebTorrent 脚本,必须同时出现在两个网站上)。

谁构建 WebTorrent?

WebTorrent 是由Feross Aboukhadijeh以及数百个开源贡献者共同构建的。WebTorrent 项目由WebTorrent,LLC管理,作为一个非盈利项目。

Feross 的其他项目包括javascript 标准样式PeRCDN(卖给雅虎)学习笔记YouTube 即时通讯.

在过去,Feross 参与斯坦福大学,在斯坦福人机交互计算机安全实验室做过研究,并在Quora脸谱网英特尔工作。

WebTorrent, LLC 是什么?

“WebTorrent,LLC”是拥有 WebTorrent 的合法实体。WebTorrent 是,而且永远是,非营利、开源和免费软件.

目前,还没有从 WebTorrent 中获利的计划。

WebTorrent 又与 PeerCDN 有什么不同?

PeRCDN是由 WebRTC 支持的下一代 cdn,用于高效地,点对点传输网站内容。Peercdn 由Feross AboukhadijehAbi RajaJohn Hiesey 2013 年 3 月创建,并于2013 年 12 月出售给雅虎

WebTorrent 是由Feross Aboukhadijeh2013 年 10 月。不像 PeerCDN,WebTorrent 是免费软件,根据MIT 许可. 你可以随心所欲地使用它!

“免费软件”是自由的问题,而不是价格。要理解这个概念,你应该把“自由”看成是“言论自由”,而不是“免费啤酒”。

-Richard Stallman,软件自由行动者

在技术层面上,peercdn 和 webtorrent 的构建,考虑了不同的目标。peercdn 针对低延迟下载,和快速对端发现,进行了优化。这意味着客户端和站点所有者,信任集中式服务器,可以将文件 URL 映射到内容哈希。

另一方面,WebTorrent 不需要客户端信任集中式服务器。只要给定一个.torrent文件或磁力链接,WebTorrent 客户端下载文件时,不信任任何服务器或对端。

我怎样帮个忙?

WebTorrent 是一个开源项目. 做出重要和有价值贡献的个人,将被授予承诺访问项目的权限,以便在他们认为合适的时候做出贡献。(详见全文)贡献者指南

有很多方法,可以帮助你!

如果您正在寻求帮助,请加入我们gitter或,在 IRC 上#webtorrent(freenode)以及如何开始。

哪里我能学到更多?

网上有很多关于 WebTorrent 的讲座。这里有几个:

介绍 BitTorrent 和 WebTorrent (JSConf)

<iframe width="853" height="480" src="https://www.youtube.com/embed/kxHRATfvnlw?rel=0" frameborder="0" allowfullscreen></iframe>

WebRTC 到处都是: 凌驾浏览器 (slides only)

<script async class="speakerdeck-embed" data-id="cb08869f2ac2445c99e8b73a4ac65d2b" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

WebTorrent 支持序列流. 影响网络?

BitTorrent 客户端使用一种称为“最稀有优先”的算法,来选择要下载的文件片段。系统中的每一个对等端,都会先尝试下载最稀有的部分,平均下来,在网络中大多数部分的可用性大致相同。

在实践中,稀有优先算法对 不良的种子,最为重要,或者在发布种子的前几个小时(当,播种/获种的比率不好时)。

大多数 Torrent 客户端都支持一些特性,而这些特性导致它偏离了稀有优先算法。例如,可以选择/取消选择,或排序/降级, Torrent 中的某些文件。

WebTorrent 支持按顺序传输 Torrent 文件,这对播放媒体文件来说很有用。我们正致力于改进算法,在没有对特定部分的高优先级需求时,切换回稀有优先的策略。换言之,当缓冲了足够的介质时,我们可以使用普通的“稀有优先”选择的算法。

但事实是,随着当今互联网连接的速度,用户只需花费很少的时间就可以完全下载 Torrent。,因此他们仍将花费比下载更多的时间播种。

另请注意:BitTorrent 公司的官方 Torrent 客户端 utorrent ,是提供顺序下载和选择性文件下载,BitTorrent 网络仍然非常健康。

为什么WebTorrent,没有被设计成一个全新的现代协议呢??

BitTorrent 是目前最成功、部署最广泛的 P2P 协议。它真的很管用。我们 WebTorrent 的目标是以与现有 Torrent 网络互操作的方式,将 BitTorrent 引入 Web。

重新发明该协议,会让 WebTorrent 从根本上与现有客户端不兼容,且方案不予通过。我们现在这样做更好。有线协议是完全相同的,只不过除了现有的 TCP 和 UTP 之外,现在有了一种新的连接到对等端的方法:WebRTC。

此外,重新发明协议是一个巨大的兔子坑。当我们开始这个项目的时候,已经有了很大的风险 —— WebRTC 会被所有的浏览器供应商所采用吗?数据通道实现。是否稳定,并得以执行?javascript 是否足够快,可以动态重新打包 MP4 视频,以便使用 MediaSource API 进行流式播放?我们的想法是:为什么要在标准中,添加一个新的有线协议和一些算法?

的确,BitTorrent 协议在某些方面是过时的。例如,它使用自己的奇怪的数据编码,称为“bencoding”。如果它是今天发明的,它可能,会h使用 JSON 或 messagepack。但是,这并不重要——BitTorrent 工作得很好,我们更关心的是,构建健壮有用的软件,而不是概念上的纯粹性,或追求最新的软件时尚。

可以用 WebTorrent 进行实时流媒体吗?

WebTorrent 不能进行,开箱即用的实时流,但是您可以在 WebTorrent 之上,构建实时流解决方案。

种子是不变的。这意味着一旦创建了一个 Torrent 文件,就不能,在不更改信息哈希的情况下更改它。那么,怎样,才能绕过这个限制呢?

一个天真的方法是:内容生产者,可以每 10 秒获取一次实时内容,并为其创建一个种子。浏览者将遵循Torrent 文件的这个“feed” (或信息散列)并按顺序下载内容。流媒体播放,将在实时流之后约 10-20 秒。

不过,这种方法,肯定可以改进!为什么不自己试一试,分享代码呢?

使用VPN时,WebTorrent 是否泄漏您的IP地址?我听说 WebRTC 泄露了你的IP地址。

不。

WebRTC 数据通道,不允许网站在使用 VPN 时,发现您的公共 IP 地址。WebRTC 发现过程,只会找到您的 VPN 的 IP 地址和本地网络 IP 地址。

本地 IP 地址(例如 10.x.x.x 或 192.168.x.x)可能用于“指纹化”浏览器,并在您访问的不同站点之间,进行识别,如第三方跟踪 cookie。但是,这是一个与公开,真实公共 IP 地址不同的问题,值得注意的是,浏览器已经为您提供了,数百个指纹化识别的向量(例如,您安装的字体、屏幕分辨率、浏览器窗口大小、操作系统版本、语言等)。

如果您启用了 VPN,那么 WebRTC 数据通道,将不会使用您真正的公共 IP 地址,连接到对等端,也不会显示在网页上,运行的 javascript 中。

有一次,webrtc 确实遇到了一个问题,它允许一个网站,发现你真正的公共 IP 地址,但这个问题在很久以前,就已经解决了。但这种不幸的错误信息在互联网上,不断反弹。

现在有了一个规范,它精确定义了 WebRTC 公开的 IP 地址。如果你对进一步阅读感兴趣,你可以阅读IP 控制规范

遇到麻烦了

为什么浏览器下载,不起作用?我看不到对端!

它确实有效!但你不能只使用任何随机磁力 uri 或.torrent文件。Torrent 必须,由支持 WebRTC 的客户端(即WebTorrent 桌面VuzeWebTorrent 混合Playback即时通讯β 种子) 播种。

在浏览器中,webtorrent 只能通过支持 webrtc 的客户端,下载明确播种到 web 对端的种子。 种子桌面客户端,需要支持 WebRTC 才能连接到 Web 浏览器。

为什么视频/音频流不工作?

流媒体的支持,取决浏览器中的 MediaSource API。所有现代浏览器都有MediaSource支持。在 firefox 中,firefox 42 增加了支持(即 firefox nightly)。

也支持许多文件类型(同样,取决于浏览器支持),但仅支持.mp4.m4v.m4a全力支持,包括播种。

为了支持任意文件的视频/音频流,WebTorrent 使用videostream包,该包又使用了mp4box.js。 如果您认为其中一个包中,可能存在错误,请在相应的存储库中,提交一个问题。

问题不断?

在 WebTorrent 问题跟踪器打开一个问题,或者加入我们gitter,或在 IRC 上#webtorrent(freenode)