2011-01-23 9 views
44

Non c'è molto altro da aggiungere. È possibile creare un client torrent usando solo HTML e JavaScript. Non è possibile utilizzare cose come Java, ActiveX, NaCl ... Se sì, si prega di fornire una descrizione di alto livello.È possibile creare un client torrent usando solo HTML (5) e JavaScript?

Non ho molta conoscenza del front end dev, ma penso che i websockets saranno in grado di fare il networking (è possibile connettere un client a un altro senza che tutti i dati passino attraverso un server?). So che non puoi scrivere file utilizzando JavaScript, quindi penso che il file che si sta scaricando dovrà essere salvato completamente nella memoria, altrimenti il ​​client dovrà utilizzare una delle nuove API in HTML5 per l'archiviazione dei contenuti.

+0

Suppongo che la domanda sia più rivolta: esiste un nodo "browser"? http://browserver.org/ –

+1

github.com/popcorn-official/popcorn-app: Repository non disponibile a causa di una rimozione DMCA. –

risposta

32

No. Non lo è.

Questo perché la specifica WebSocket ricade all'esterno HTML5 e JavaScript ;-) Detto, aprendo la domanda di "utilizzando funzioni supportate nativamente in [/ diffusioni progressivi] Browser" allora ...

... ancora no :-)

Questo perché WebSocket richiede uno speciale handshake per l'installazione con restrizioni. Non è un open-TCP-fest gratuito per tutti. L'approccio richiederebbe sia

  1. ai clienti di essere modificati per accettare le richieste websocket (così come trattare con tutti i problemi di accesso cross-site)

  2. o, più realisticamente, un server per rimbalzare attraverso

+0

1. Sarò in grado di fare questa modifica o dovrà essere eseguita dagli sviluppatori dei browser? 2. Tutte le informazioni passeranno attraverso il server (come in ogni singolo bit di ogni file indicizzato dal tracker) o solo l'handshake? Grazie! – quilby

+0

@quilby 1. La modifica dovrebbe essere * per client che accetta richieste WebSocket * (leggi: * altri client torrent * - ci sono restrizioni "cross-domain" imposte, come XHR ecc., Che renderebbero comunque questo approccio inutilizzabile) 2) Tutte le informazioni, possibilmente crittografate tramite TLS da * client a server * (ma non dal server ad altri client). Inoltre, WebSocket non stabilisce un meccanismo per accettare le richieste in entrata (sebbene con il server in gioco si possano fare molte cose interessanti). Alcuni client torrent non saranno in grado di effettuare back-connections e si rifiutano persino di giocare. –

+0

@quilby Alcuni client torrent supportano vari metodi di crittografia (sull'intestazione o sull'intero stream). Questo non dovrebbe essere preso come fornire una sorta di privacy reale e sarebbe solo * un altro * problema da affrontare. –

8

Non è possibile con WebSockets perché sono strettamente client-server. Ma l'imminente standard WebRTC, pur essendo principalmente rivolto alle conferenze audio/video, ha un provision per i trasferimenti di dati generici client-client. Se questa disposizione arriva alla versione finale, avrai un modo efficace per implementare trasferimenti di dati peer-to-peer generici tra browser.

3
+3

come è possibile che l'evento di questa lib esista nonostante le risposte precedenti dichiarino che è impossibile costruirlo? Modifica: suppongo sia perché dipendono da node.js e che non possono eseguire il lato client nel browser (in modo nativo) ... –

+0

È perché questi sono client torrent del browser Web, sono script di nodo (lato server Javascript). – adalal

3

Sono in ritardo per la festa, ma dal momento che questa domanda è ancora tra i primi nei risultati di Google, risponderò comunque.

È possibile scrivere applicazioni Web o estensioni del browser relative a BitTorrent con Btapp.js, che utilizza un'interfaccia Javascript fornita da BitTorrent Torque. Quando chiami il metodo di connessione, all'utente verrà richiesto di installare BitTorrent Torque, tutto qui. Alcune cose interessanti in corso se si controllano i progetti esistenti utilizzando it-streaming media, condivisione drag-and-drop, ecc.

Per quanto riguarda le soluzioni senza alcuna dipendenza, quelle menzionate da Nick Russler sembrano ancora essere l'unico possibile opzioni.

9

Non c'è una buona ragione per cui questo non può essere fatto oggi. BitTorrent/uTorrent hanno entrambi il codice per supportare connessioni web socket con frame binari. Tuttavia, sono attualmente compilati senza supporto (a causa di ragioni politiche/di prodotto, credo). Lavoravo in BitTorrent e un altro ingegnere (Arty) ha scritto il supporto. Per un po 'è stato davvero bello poter scaricare torrent su iPad da Safari mobile. (risparmiando direttamente su Google Drive in modo abbastanza divertente)

I tracker HTTP possono essere configurati per inviare intestazioni Access-Control-Allow-Origin.

Anche il protocollo di notifica del tracker potrebbe utilizzare un bit nel campo "chiave" per indicare che il client accetta connessioni web socket. Quindi un argomento speciale come "typewant" potrebbe indicare che la risposta di annuncio dovrebbe restituire solo i client che hanno inviato quel bit.

Il protocollo tracker può anche essere esteso in modo simile per supportare la negoziazione delle connessioni DataChannel P2P WebRTC, in modo che le connessioni possano essere effettuate direttamente nel browser < -> browser.

Per ora, abbiamo l'API della piattaforma chrome.socket, e jstorrent, un'applicazione confezionato cromo (progettato per ChromeOS principalmente)

Problemi correlati