WebTorrent ist ein Streaming -Torrent -Client für Node.js und den Browser . Ja, das stimmt. Der Browser. Es ist vollständig in JavaScript geschrieben - der Sprache des Webs -, sodass der gleiche Code in beiden Runtimes funktioniert.
In Node.js ist dieses Modul ein einfacher Torrent -Client, der TCP und UDP verwendet, um mit anderen Torrent -Clients zu sprechen.
Im Browser verwendet WebTorrent WEBRTC (Datenkanäle) für Peer-to-Peer-Transport. Es kann ohne Browser -Plugins, Erweiterungen oder Installationen verwendet werden. Es ist nur JavaScript ™. Hinweis: WebTorrent unterstützt UDP/TCP -Peers im Browser nicht .
Fügen Sie einfach das Skript webtorrent.min.js auf Ihre Seite auf, um mit dem BitTorrent -Protokoll Dateien über WEBRTC abzurufen, oder import WebTorrent from 'webtorrent' mit Browserify oder Webpack. Siehe Demo -Apps und Code -Beispiele unten.
Um BitTorrent über WEBRTC zu arbeiten (was der einzige P2P -Transport ist, der im Web funktioniert), haben wir einige Protokolländerungen vorgenommen. Daher kann ein Browser-basierter Webtorrent-Client oder "Web Peer" nur eine Verbindung zu anderen Clients herstellen, die WebTorrent/Webrtc unterstützen.
Verwenden Sie einen Client, der Webtorrent, z. B. Webtorrent-Desktop, einen Desktop-Client mit einer vertrauten Benutzeroberfläche, mit Webtorrent-Desktop, einer Verbindung zu Webtorrent-Desktop, einem Webtorrent-Hybrid, einem Befehlszeilenprogramm oder Instant.io, einer Website, um Webtorrent-Desktop, z. Etablierte Torrent -Clients wie Vuze haben bereits Webtorrent -Unterstützung hinzugefügt, damit sie eine Verbindung zu normalen und Web -Kollegen herstellen können. Wir hoffen, dass andere Kunden folgen werden.
<video> -Tag ( webm, mkv, mp4, ogv, mov, etc (AV1, H264, HEVC*, VP8, VP9, AAC, FLAC, MP3, OPUS, Vorbis, etc) So installieren Sie WebTorrent für die Verwendung im Knoten oder im Browser mit import WebTorrent from 'webtorrent' , aus:
npm install webtorrent Um ein webtorrent -Befehlszeilenprogramm zu installieren, rennen Sie:
npm install webtorrent-cli -gSo installieren Sie eine Webtorrent -Desktop -Anwendung für Mac, Windows oder Linux, siehe Webtorrent -Desktop.
#webtorrent , um bei der Entwicklung zu helfen oder mit einigen verrückten Wissenschaftshackern abzuhängen :)Viele Leute!
Lesen Sie die vollständige API -Dokumentation.
WebTorrent ist der erste BitTorrent -Client, der im Browser mit offenen Webstandards (keine Plugins, nur HTML5 und WebRTC) arbeitet! Es ist einfach, loszulegen!
import WebTorrent from 'webtorrent'
const client = new WebTorrent ( )
const magnetURI = '...'
client . add ( magnetURI , torrent => {
// Got torrent metadata!
console . log ( 'Client is downloading:' , torrent . infoHash )
for ( const file of torrent . files ) {
document . body . append ( file . name )
}
} ) import dragDrop from 'drag-drop'
import WebTorrent from 'webtorrent'
const client = new WebTorrent ( )
// When user drops files on the browser, create a new torrent and start seeding it!
dragDrop ( 'body' , files => {
client . seed ( files , torrent => {
console . log ( 'Client is seeding:' , torrent . infoHash )
} )
} )Es gibt weitere Beispiele in DOCS/Get-Started.md.
WebTorrent funktioniert hervorragend mit Browserify, einem NPM-Paket, mit dem Sie den Node-Stil benötigen (), um Ihren Browsercode zu organisieren und Module zu laden, die von NPM installiert sind (wie in den vorherigen Beispielen angezeigt).
WebTorrent arbeitet auch mit WebPack, einem anderen Modul -Bundler. WebPack erfordert jedoch eine zusätzliche Konfiguration, die Sie in der von Webtorrent verwendeten WebPack -Bundle -Konfiguration finden können.
Sie können die vorgefertigte Version nur über import WebTorrent from 'webtorrent/dist/webtorrent.min.js' verwenden und die Webpack-Konfiguration überspringen.
WebTorrent ist auch als eigenständiges Skript ( webtorrent.min.js ) verfügbar, das WebTorrent im window aufdeckt, sodass es nur mit einem Skript -Tag verwendet werden kann:
< script type =' module ' >
import WebTorrent from 'webtorrent.min.js'
</ script >Das WebTorrent -Skript wird auch auf einer schnellen, zuverlässigen CDN -Infrastruktur (CloudFlare und MaxCDN) gehostet, um eine einfache Aufnahme auf Ihre Website zu erhalten:
< script type =' module ' >
import WebTorrent from 'https://esm.sh/webtorrent'
</ script > Wenn Sie Webtorrent in einer Chrome -App verwenden möchten, können Sie das folgende Skript einfügen:
< script type =' module ' >
import WebTorrent from 'webtorrent.chromeapp.js'
</ script > Aktivieren Sie unbedingt die chrome.sockets.udp und chrome.sockets.tcp -Berechtigungen!
WebTorrent funktioniert auch in node.js und verwendet das gleiche NPM -Paket! Es ist verrückte Wissenschaft!
HINWEIS : Um neben normalen BitTorrent-Peers eine Verbindung zu "Web-Peers" (Browsern) herzustellen, verwenden Sie Webtorrent-Hybrid, das die WEBRTC-Unterstützung für Knoten enthält.
WebTorrent ist auch als Befehlszeilen -App verfügbar. Hier erfahren Sie, wie man es benutzt:
$ npm install webtorrent-cli -g
$ webtorrent --helpUm einen Strom herunterzuladen:
$ webtorrent magnet_uriUm einen Strom auf ein Gerät wie Airplay oder Chromecast zu streamen, geben Sie einfach eine Flagge übergeben:
$ webtorrent magnet_uri --airplayEs gibt viele unterstützte Streaming -Optionen:
--airplay Apple TV
--chromecast Chromecast
--mplayer MPlayer
--mpv MPV
--omx [jack] omx [default: hdmi]
--vlc VLC
--xbmc XBMC
--stdout standard out [implies --quiet]Zusätzlich zu Magnet -URIs unterstützt Webtorrent viele Möglichkeiten, einen Strom zu spezifizieren.
Der größte Teil der aktiven Entwicklung findet in kleinen NPM -Paketen statt, die von Webtorrent verwendet werden.
"Wenn Anwendungen gut erledigt sind, sind sie nur die wirklich anwendungsspezifischen, brackigen Rückstände, die nicht so leicht abstrahieren können. Alle netten, wiederverwendbaren Komponenten, die auf Github und NPM hüpfen, wo alle zusammenarbeiten können, um die Commons voranzutreiben." - Substanz aus "Wie ich Module schreibe"
Dies sind die Hauptmodule, aus denen Webtorrent besteht:
| Modul | Tests | Version | Beschreibung |
|---|---|---|---|
| Webtorrent | Torrent Client (dieses Modul) | ||
| BitTorrent-dht | verteilte Hash -Tabelle Client | ||
| Bittorrent-Peerid | Identifizieren Sie den Kundennamen/die Client -Version | ||
| BitTorrent-Protokoll | Bittorrent -Protokollstrom | ||
| Bittorrent-Tracker | BitTorrent Tracker Server/Client | ||
| BitTorrent-LSD | Bittorrent lokaler Service Discovery | ||
| Torrent erstellen | Erstellen Sie. Torrent -Dateien | ||
| Magnet-uri | Magnet uris analysieren | ||
| Torrent analysieren | Torrent -Identifikatoren analysieren | ||
| Torrent-Discovery | Finden Sie Kollegen über DHT, Tracker und LSD | ||
| ut_metadata | Metadaten für Magnet -URIs (Protokollverlängerung) | ||
| UT_PEX | Peer -Entdeckung (Protokollverlängerung) |
Aktivieren Sie im Knoten Debug-Protokolle, indem Sie die DEBUG Umgebungsvariable auf den Namen des Moduls einstellen, das Sie debuggen (z. B. bittorrent-protocol oder * , um alle Protokolle zu drucken).
DEBUG= * webtorrentAktivieren Sie im Browser Debug -Protokolle, indem Sie dies in der Entwicklerkonsole ausführen:
localStorage . setItem ( 'debug' , '*' )Deaktivieren Sie, indem Sie dies ausführen:
localStorage . removeItem ( 'debug' )MIT. Copyright (C) Feross Aboukhadijeh und Webtorrent, LLC.