WebTorrent es un cliente de transmisión de Torrent para Node.js y el navegador . Sí, eso es correcto. El navegador. Está escrito completamente en JavaScript, el lenguaje de la web, por lo que el mismo código funciona en ambos tiempos de ejecución.
En Node.js, este módulo es un cliente torrent simple, que usa TCP y UDP para hablar con otros clientes de Torrent.
En el navegador, WebTorrent utiliza WEBRTC (canales de datos) para el transporte entre pares. Se puede usar sin complementos de navegador, extensiones o instalaciones. Es solo JavaScript ™. Nota: WebTorrent no es compatible con los pares UDP/TCP en el navegador.
Simplemente incluya el script webtorrent.min.js en su página para comenzar a obtener archivos a través de WebRTC utilizando el protocolo BitTorrent, o import WebTorrent from 'webtorrent' con Browserify o Webpack. Consulte las aplicaciones de demostración y los ejemplos de código a continuación.
Para hacer que BitTorrent funcione sobre WEBRTC (que es el único transporte P2P que funciona en la web), hicimos algunos cambios en el protocolo. Por lo tanto, un cliente web de WebTorrent basado en navegador o "par web" solo puede conectarse a otros clientes que admiten WebTorrent/WEBRTC.
Para sembrar archivos para pares web, use un cliente que admita WebTorrent, por ejemplo, Webtorrent Desktop, un cliente de escritorio con una interfaz de usuario familiar que puede conectarse a pares web, webtorrent-hybrid, un programa de línea de comandos o instant.io, un sitio web. Los clientes de Torrent establecidos como Vuze ya han agregado soporte WebTorrent para que puedan conectarse a pares normales y web. Esperamos que otros clientes sigan.
<video> ( webm, mkv, mp4, ogv, mov, etc (AV1, H264, HEVC*, VP8, VP9, AAC, FLAC, MP3, OPUS, Vorbis, etc) ) Para instalar webTorrent para su uso en el nodo o el navegador con import WebTorrent from 'webtorrent' , ejecutar:
npm install webtorrent Para instalar un programa de línea de comandos webtorrent , ejecute:
npm install webtorrent-cli -gPara instalar una aplicación de escritorio webTorrent para Mac, Windows o Linux, consulte WebTorrent Desktop.
#webtorrent para ayudar con el desarrollo o para pasar el rato con algunos hackers de ciencias locas :)¡Mucha gente!
Lea la documentación completa de la API.
¡WebTorrent es el primer cliente BitTorrent que funciona en el navegador, utilizando estándares web Open (sin complementos, solo HTML5 y WEBRTC)! ¡Es fácil comenzar!
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 )
} )
} )Hay más ejemplos en Docs/Get-Started.md.
WebTorrent funciona muy bien con Browserify, un paquete NPM que le permite usar el estilo de nodo requerido () para organizar el código de su navegador y los módulos de carga instalados por NPM (como se ve en los ejemplos anteriores).
WebTorrent también funciona con Webpack, otro módulo Bundler. Sin embargo, Webpack requiere una configuración adicional que puede encontrar en la configuración del paquete Webpack utilizada por WebTorrent.
O bien, puede usar la versión preconstruida a través de import WebTorrent from 'webtorrent/dist/webtorrent.min.js' y omitir la configuración de Webpack.
WebTorrent también está disponible como un script independiente ( webtorrent.min.js ) que expone WebTorrent en el objeto window , por lo que se puede usar con solo una etiqueta de script:
< script type =' module ' >
import WebTorrent from 'webtorrent.min.js'
</ script >El script WebTorrent también está alojado en infraestructura CDN rápida y confiable (CloudFlare y MaxCDN) para una fácil inclusión en su sitio:
< script type =' module ' >
import WebTorrent from 'https://esm.sh/webtorrent'
</ script > Si desea usar WebTorrent en una aplicación Chrome, puede incluir el siguiente script:
< script type =' module ' >
import WebTorrent from 'webtorrent.chromeapp.js'
</ script > ¡Asegúrese de habilitar los permisos chrome.sockets.udp y chrome.sockets.tcp !
¡WebTorrent también funciona en Node.js, utilizando el mismo paquete NPM! ¡Es una ciencia loca!
Nota : Para conectarse a "pares web" (navegadores) Además de los compañeros de bittorrent normales, use WebTorrent-Hybrid que incluye el soporte de WebRTC para el nodo.
WebTorrent también está disponible como una aplicación de línea de comandos. Aquí le mostramos cómo usarlo:
$ npm install webtorrent-cli -g
$ webtorrent --helpPara descargar un torrent:
$ webtorrent magnet_uriPara transmitir un torrente a un dispositivo como AirPlay o Chromecast , simplemente pase una bandera:
$ webtorrent magnet_uri --airplayHay muchas opciones de transmisión compatibles:
--airplay Apple TV
--chromecast Chromecast
--mplayer MPlayer
--mpv MPV
--omx [jack] omx [default: hdmi]
--vlc VLC
--xbmc XBMC
--stdout standard out [implies --quiet]Además de Magnet URI, WebTorrent admite muchas formas de especificar un torrente.
La mayor parte del desarrollo activo está ocurriendo dentro de pequeños paquetes de NPM que utilizan WebTorrent.
"Cuando las aplicaciones se hacen bien, son solo los residuos salobres y específicos de la aplicación que no se pueden abstraer tan fácilmente. Todos los componentes agradables y reutilizables se subliman en GitHub y NPM donde todos pueden colaborar para avanzar a los Comunes". - Substack de "Cómo escribo módulos"
Estos son los módulos principales que componen WebTorrent:
| módulo | pruebas | versión | descripción |
|---|---|---|---|
| torrente web | Torrent Client (este módulo) | ||
| bittorrent-dht | Cliente de tabla hash distribuido | ||
| bittorrent-leerid | Identificar el nombre/versión del cliente | ||
| bitTorrent-protocol | flujo de protocolo bitTorrent | ||
| rastreador de bittorrent | BitTorrent Tracker Server/Client | ||
| bitTorrent-lsd | descubrimiento de servicios locales bitTorrent | ||
| crear torrente | crear archivos .torrent | ||
| magnet-uri | PARSE Magnet Uris | ||
| parse-torrente | identificadores de torrente de análisis | ||
| torrent-descubrimiento | Encuentre pares a través de DHT, Tracker y LSD | ||
| UT_METADATA | metadatos para URI magnet (extensión del protocolo) | ||
| UT_PEX | Descubrimiento de pares (extensión del protocolo) |
En el nodo , habilite los registros de depuración estableciendo la variable de entorno de DEBUG en el nombre del módulo que desea depurar (por ejemplo, bittorrent-protocol o * para imprimir todos los registros ).
DEBUG= * webtorrentEn el navegador , habilite los registros de depuración ejecutando esto en la consola de desarrollador:
localStorage . setItem ( 'debug' , '*' )Desactivar ejecutando esto:
localStorage . removeItem ( 'debug' )Mit. Copyright (c) Feros Aboukhadijeh y WebTorrent, LLC.