Protokol BitTorrent pro P2P sdílení souborů tento rok slaví 15. narozeniny a stále se těší velké popularitě. Na druhou stranu je pravda, že poslední roky už se nějak zvlášť nevyvíjí. Se zásadní, byť konceptuálně jednoduchou inovací teď přichází projekt WebTorrent. Jde o použití API WebRTC, které umožňuje torrenty streamovat přímo do prohlížeče namísto klasického spojení TCP/uTP.
O WebRTC se nejčastěji hovoří ve spojení s audio či videohovory přímo z prohlížeče, nicméně možnosti použití jsou mnohem širší. WebRTC umožňuje přímé spojení dvou prohlížečů a posílání v podstatě jakýchkoliv dat. A právě na tom staví WebTorrent. Projekt odstartoval Feross Aboukhadijeh a zaštiťuje ho společnost WebTorrent, která ho však podle slov autora nechce komercionalizovat. Tak jako tak, WebTorrent je svobodný software (licence MIT).
Co to je a jak to funguje?
Jako WebTorrent můžeme označovat víc věcí, primárně to ale je torrentový klient napsaný v JavaScriptu, který organizuje stahování zajišťuje navazování komunikace mezi peery. Samotný transport dat potom probíhá už přes zmíněné WebRTC. Peerové se hledají klasicky přes tracker protokol, který ale vzhledem k využití WebRTC musel být trochu poupraven. Autor tyto úpravy plánuje standardizovat prostřednictvím BEP (BitTorrent Enhancement Proposal).
V současnosti to tedy znamená, že BitTorrent a WebTorrent nejsou vzájemně kompatibilní. Dobrá zpráva je, že to do budoucna nebude představovat zásadní problém. Klienti mohou celkem snadno podporovat oba protokoly zároveň a uživatele rozdíl nemusí zajímat. Podporu WebTorrentu, resp. WebRTC, z významnějších klientů nabízí např. Vuze. Důležité je zmínit, že pro WebTorrent nemusíte mít odlišné torrenty. Na jednom torrentu mohou sedět BitTorrent a WebTorrent klienti a každý zkrátka bude komunikovat s tím, s kým to bude umět.
Pokud se WebTorrent alespoň trochu rozšíří, byla by hloupost, aby ho klienti nezačali podporovat. Ochuzovali by se tak o spojení s dalšími peery a typicky tedy i vyšší rychlost stahování. WebTorrent nelze brát jako konkurenci BitTorrentu, ale spíš jako vylepšení, které rozšiřuje možnosti využití. Navíc implementace WebRTC opravdu není nic světoborného, co by vyžadovalo mnoho prostředků, úsilí nebo co by snad mělo nepříznivý vliv na výkon klienta.
V rámci projektu vznikl také klient WebTorrent Desktop, dostupný pro Linux, Windows a OS X, který je právě hybridní – podporuje oba protokoly. Klient je napsaný v node.js, je opravdu jednoduchý a nemá téměř žádné možnosti nastavení. Ale funguje dobře. To se týká zejména integrovaného přehrávače videa, který zvládá také seekování. A překvapivě rychle. Při rychlosti stahování 20 Mbps přesun na vybranou (dosud nestaženou) pozici videa trval ani ne sekundu.
Webový klient = WebRTC + HTML5 + JavaScript
Ale teď k tomu hlavnímu. WebTorrent vznikl hlavně proto, aby dostal P2P video do webového prohlížeče. A to se mu daří náramně. Na webu projektu najdete ukázkové video, volně dostupný film Sintel. Tváří se jako klasické video v HTML5 hostované na nějakém serveru, ale místo toho se stahuje od X různých lidí, kteří video na stránce také přehrávají nebo těch peerů, kteří provozují klienta s podporou WebTorrentu.
Na webu je i pěkně znázorněno, jak se lehký javascriptový klient připojuje k dalším peerům a dostává od nich data. Ale kdyby tam takové znázornění nebylo, ani byste nepoznali, že defacto používáte BitTorrent. Se streamováním videa často bývají různé problémy, ale v tomto případě jsem se s žádným nesetkal. A to jsem vzhledem k tomu, jak je technologie nová, čekal spíš kostrbaté technologické demo. I v tomto případě je seekování velmi svižné.
Různé prohlížeče nepodporují všechny vlastnosti WebRTC, ale WebTorrent využívá pouze základní vlastnosti tohoto API, které by měly být podporovány všude. Chrome, Firefox, Opera, Edge a v podstatě každý další moderní prohlížeč, na který si vzpomenete, si s WebTorrentem poradí. Výjimkou je zatím Safari, nicméně i pro něj se podpora WebRTC připravuje. Na mobilních systémech je situace podobná a WebRTC zvládají téměř všechny oblíbené prohlížeče.
Vložení videa na webovou stránku je opravdu snadné. Stačí nalinkovat javascriptový klient a přidat adresu torrentu, případně rovnou jeho magnet URL. Opět připomeňme, že nemusí jít o torrent vytvořený pro WebTorrent, ale musí být k dispozici aspoň jeden seed, který WebTorrent podporuje, aby video v prohlížeči běželo. Autoři projektu se zaměřují hlavně na video, ale teoreticky není žádný problém technologii použít pro sdílení jakýchkoliv souborů.
Možnosti využití
Je to hezké, ale k čemu to je? Na tuto otázku neexistuje úplně snadná odpověď. Technologii samozřejmě mohou využít piráti, aby sdílení (a sledování) obsahu ještě usnadnili, ale to tu rozebírat nebudeme. WebTorrent by se celkem mohl hodit pro přehrávání videí v malém a středním rozsahu. Stačí založit torrent, spustit na jednom počítači s rozumnou konektivitou seedování a máte vystaráno. Nemusíte řešit hosting ani případné škálování, s tím už vypomohou návštěvníci.
Pak se ale nabízí otázka, proč radši nevyužít YouTube, Vimeo nebo nějaký další známý videoserver? WebTorrent bude spíš vyplňovat mezírky na trhu a používat se ve specifických případech, protože použití YouTube je přece jen snazší: nahrajete video a o nic dalšího se nemusíte starat. To ale vůbec nevadí. WebTorrent není služba, která by potřebovala určité množství uživatelů, aby přežila. Je to prostě otevřená a celkem jednoduchá technologie, která je a bude k dispozici.
Jisté omezení samozřejmě představuje fakt, že operátoři někdy rádi omezují P2P spojení. A někdy třeba nechcete odesílat data, abyste si nečerpali datový limit nebo omezovali jiné datové přenosy. Ale to by mělo jít v prohlížeči konfigurovat. WebTorrent ještě musí trochu dozrát, ale už nyní je zřejmé, že jde o povedený projekt, který dál rozšiřuje možnosti webových prohlížečů a který si své využití najde.