WebTorrent est un client torrent de streaming pour Node.js et le navigateur . Oui, c'est vrai. Le navigateur. Il est entièrement écrit en JavaScript - la langue du Web - donc le même code fonctionne en deux temps.
Dans Node.js, ce module est un simple client torrent, en utilisant TCP et UDP pour parler à d'autres clients torrent.
Dans le navigateur, WebTorrent utilise WebBrTC (canaux de données) pour le transport entre pairs. Il peut être utilisé sans plugins de navigateur, extensions ou installations. C'est juste JavaScript ™. Remarque: WebTorrent ne prend pas en charge les pairs UDP / TCP dans le navigateur.
Incluez simplement le script webtorrent.min.js sur votre page pour démarrer des fichiers de récupération sur weBrTC à l'aide du protocole BitTorrent, ou import WebTorrent from 'webtorrent' avec Browserify ou WebPack. Voir les applications de démonstration et les exemples de code ci-dessous.
Pour faire fonctionner BitTorrent sur WebBrTC (qui est le seul transport P2P qui fonctionne sur le Web), nous avons apporté des modifications du protocole. Par conséquent, un client WebTorrent basé sur un navigateur ou un «pair Web» ne peut se connecter qu'à d'autres clients qui prennent en charge WebTorrent / weBrTC.
Pour semer les fichiers pour les pairs Web, utilisez un client qui prend en charge WebTorrent, par exemple WebTorrent Desktop, un client de bureau avec une interface utilisateur familière qui peut se connecter aux pairs Web, webtorrent-hybrid, un programme de ligne de commande, ou Instant.io, un site Web. Des clients torrent établis comme Vuze ont déjà ajouté une prise en charge de WebTorrent afin qu'ils puissent se connecter à des pairs normaux et Web. Nous espérons que d'autres clients suivront.
<video> ( webm, mkv, mp4, ogv, mov, etc (AV1, H264, HEVC*, VP8, VP9, AAC, FLAC, MP3, OPUS, Vorbis, etc) ) Pour installer WebTorrent pour une utilisation dans Node ou dans le navigateur avec import WebTorrent from 'webtorrent' , exécutez:
npm install webtorrent Pour installer un programme de ligne de commande webtorrent , exécutez:
npm install webtorrent-cli -gPour installer une application de bureau WebTorrent pour Mac, Windows ou Linux, voir WebTorrent Desktop.
#webtorrent pour aider à développer ou passer du temps avec des pirates scientifiques fous :)Beaucoup de gens!
Lisez la documentation complète de l'API.
WebTorrent est le premier client BitTorrent qui fonctionne dans le navigateur, en utilisant des normes Web ouvertes (pas de plugins, juste html5 et webrtc)! C'est facile de commencer!
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 )
} )
} )Il y a plus d'exemples dans Docs / Get-started.md.
WebTorrent fonctionne très bien avec Browserify, un package NPM qui vous permet d'utiliser le nœud requise () pour organiser votre code de navigateur et charger les modules installés par NPM (comme on le voit dans les exemples précédents).
WebTorrent travaille également avec WebPack, un autre module Bundler. Cependant, WebPack nécessite une configuration supplémentaire que vous pouvez trouver dans la configuration de bundle WebPack utilisée par WebTorrent.
Ou, vous pouvez simplement utiliser la version prédéfinie via import WebTorrent from 'webtorrent/dist/webtorrent.min.js' et sauter la configuration Webpack.
WebTorrent est également disponible en tant que script autonome ( webtorrent.min.js ) qui expose WebTorrent sur l'objet window , afin qu'il puisse être utilisé avec juste une balise de script:
< script type =' module ' >
import WebTorrent from 'webtorrent.min.js'
</ script >Le script WebTorrent est également hébergé sur une infrastructure CDN rapide et fiable (CloudFlare et MaxCDN) pour une inclusion facile sur votre site:
< script type =' module ' >
import WebTorrent from 'https://esm.sh/webtorrent'
</ script > Si vous souhaitez utiliser WebTorrent dans une application Chrome, vous pouvez inclure le script suivant:
< script type =' module ' >
import WebTorrent from 'webtorrent.chromeapp.js'
</ script > Assurez-vous d'activer les autorisations chrome.sockets.udp et chrome.sockets.tcp !
WebTorrent fonctionne également dans Node.js, en utilisant le même package NPM! C'est une science folle!
Remarque : Pour se connecter aux «pairs Web» (navigateurs) en plus des pairs bittorrent normaux, utilisez webtorrent-hybride qui inclut la prise en charge de la prise en charge WebBrTC pour le nœud.
WebTorrent est également disponible en tant qu'application de ligne de commande. Voici comment l'utiliser:
$ npm install webtorrent-cli -g
$ webtorrent --helpPour télécharger un torrent:
$ webtorrent magnet_uriPour diffuser un torrent sur un appareil comme AirPlay ou Chromecast , passez simplement un drapeau:
$ webtorrent magnet_uri --airplayIl existe de nombreuses options de streaming prises en charge:
--airplay Apple TV
--chromecast Chromecast
--mplayer MPlayer
--mpv MPV
--omx [jack] omx [default: hdmi]
--vlc VLC
--xbmc XBMC
--stdout standard out [implies --quiet]En plus de Magnet Uris, WebTorrent prend en charge de nombreuses façons de spécifier un torrent.
La majeure partie du développement actif se produit à l'intérieur de petits packages NPM utilisés par webtorrent.
"Lorsque les applications sont bien faites, ce ne sont que les résidus saumâtres vraiment spécifiques aux applications qui ne peuvent pas être si facilement abstraits. Tous les composants sympas et réutilisables subliment Github et NPM où tout le monde peut collaborer pour faire avancer les Communes." - Sans plack de "Comment j'écris des modules"
Ce sont les principaux modules qui composent le webtorrent:
| module | tests | version | description |
|---|---|---|---|
| webtorrent | Client torrent (ce module) | ||
| bittorrent-dht | Client de table de hachage distribué | ||
| bittorrent-peerid | Identifier le nom / la version du client | ||
| bittorrent-protocol | Stream de protocole BitTorrent | ||
| tracker bittorrent | BitTorrent Tracker Server / Client | ||
| BitTorrent-LSD | BitTorrent local Service Discovery | ||
| création de torrent | Créer des fichiers. | ||
| aimant-uri | URIS AIGNEUR | ||
| analyse de pair | Panning Torrent Identifiants | ||
| découverte de torrent | Trouver des pairs via DHT, tracker et LSD | ||
| ut_metadata | métadonnées pour les uris aimant (extension du protocole) | ||
| ut_pex | Découverte de pairs (extension du protocole) |
Dans Node , activez les journaux de débogage en définissant la variable d'environnement DEBUG sur le nom du module que vous souhaitez déboguer (par exemple bittorrent-protocol , ou * pour imprimer tous les journaux ).
DEBUG= * webtorrentDans le navigateur , activez les journaux de débogage en exécutant cela dans la console du développeur:
localStorage . setItem ( 'debug' , '*' )Désactiver en exécutant ceci:
localStorage . removeItem ( 'debug' )Mit. Copyright (c) Feross Aboukhadijeh et WebTorrent, LLC.