WebTorrent 是用于 Node.js 和浏览器的流 torrent 客户端,完全使用 JavaScript 编写。WebTorrent 是个轻量级,快速的开源 BT 客户端,拥有非常棒的用户体验。

68747470733a2f2f776562746f7272656e742e696f2f696d672f576562546f7272656e742e706e67

在 node.js 中,模块只是简单的 torrent 客户端,使用 TCP 和 UDP 来和其他 torrent 客户端进行通讯。

在浏览器中,WebTorrent 使用 WebRTC  (数据通道)进行点对点的传输,无需任何浏览器插件,扩展或者安装。注意:在浏览器上,WebTorrent 支持 UDP/TCP 点对点传输。

WebTorrent Desktop 连接 BitTorrent 和WebTorrent 端点。

Network

特性

  • Node.js &浏览器的 BT 客户端 (相同的 npm 包)
  • 速度非常快
  • 可同时,高效的下载多个 torrents
  • 纯 Javascript (无原生依赖)
  • streams 一样表示文件
  • 支持高级 BT 客户端特性
  • 完整的测试套件 (完全支持离线运行,非常可靠快速)

仅浏览器支持的特性:

  • WebRTC 数据通道
  • P2P 网络
  • 流视频 torrent 为 <video> 标签 (webm (vp8, vp9) 或者 mp4 (h.264))
  • 支持 Chrome, Firefox 和 Opera

Sauce Labs Build

仅 NodeJS 支持的特性:

  • 支持 AirPlay, Chromecast, VLC player 流和其他设备/播放器

示例

浏览器下载文件:

var WebTorrent = require('webtorrent')

var client = new WebTorrent()
var magnetURI = '...'

client.add(magnetURI, function (torrent) {
  // Got torrent metadata!
  console.log('Client is downloading:', torrent.infoHash)

  torrent.files.forEach(function (file) {
    // Display the file by appending it to the DOM. Supports video, audio, images, and
    // more. Specify a container element (CSS selector or reference to DOM node).
    file.appendTo('body')
  })
})

浏览器发送文件:

var dragDrop = require('drag-drop')
var WebTorrent = require('webtorrent')

var client = new WebTorrent()

// When user drops files on the browser, create a new torrent and start seeding it!
dragDrop('body', function (files) {
  client.seed(files, function (torrent) {
    console.log('Client is seeding:', torrent.infoHash)
  })
})

WebTorrent 遵循 MIT 开源授权协议。

GitHub 地址:https://github.com/feross/webtorrent

下载:https://webtorrent.io/desktop (Windows,Mac 和 Linux)。