Streamer des films ou de la musique via bittorrent directement dans un navigateur, c'est possible depuis un moment et c'est plutôt cool, car ça a donné naissance à pas mal de softs comme Popcorn Time.

Pour rentrer un peu plus sous le capot de ces softs, je peux vous citer par exemple Webtorrent, un client qui permet de faire ça, dont les sources sont disponibles et qui tourne aussi bien dans un navigateur que dans n'importe quel projet développé en NodeJS. Oui, vous l'aurez compris, c'est écrit entièrement en JavaScript et ça utilise la fonctionnalité WebRTC du navigateur pour assurer l'échange des paquets en P2P.

Voici comment ça fonctionne :

Network

Vous comprenez grâce à ce schéma que WebTorrent n'est pas directement compatible avec Bittorrent. Le fonctionnement est similaire, mais si on veut que les 2 réseaux échangent des données, il faut des clients hybrides qui sauront causer aux 2 réseaux à la fois. C'est pourquoi WebTorrent propose déjà ce genre de passerelle comme webtorrent-hybrid, instant.io ou encore WebTorrent.app, mais leur objectif c'est que les clients torrents de référence comme Transmission, Vuze ou encore uTorrent adoptent le support de WebTorrent.

WebTorrent supporte les URI magnets, la découverte de peers (via DHT, les trackers...etc.), sait récupérer plusieurs torrents en même temps, sait streamer un webm ou un mp4 directement à l'intérieur d'une balise <video>, sait communiquer avec les WebTorrent initiés sur d'autres domaines (Encore heureux, me direz-vous !) et propose même une API qui permet d'y greffer des extensions.

Pour l'utiliser dans vos pages web, il suffit d'inclure un simple JS et de vous pencher sur les démos et exemples de code. Ça peut permettre par exemple de soulager votre diffusion de vidéos en ligne...

Bref si ce genre de sujet vous intéresse, je vous invite à y jeter un œil.