web-dev-qa-db-ja.com

HTML(5)とJavaScriptのみを使用してトレントクライアントを構築することは可能ですか?

追加することはこれ以上ありません。 HTMLとJavaScriptのみを使用してトレントクライアントを構築することは可能ですか? Java、ActiveX、NaClなどは使用できません。使用している場合は、概要を説明してください。

フロントエンドの開発についてはあまり知識がありませんが、websocketでネットワーキングを実行できると思います(すべてのデータをサーバーを経由せずに、あるクライアントを別のクライアントに接続することはできますか?)。 JavaScriptを使用してファイルを書き込むことはできないので、ダウンロードするファイルをメモリに完全に保存するか、クライアントがコンテンツを保存するためにHTML5の新しいAPIの1つを使用する必要があると思います。

46
quilby

ノードとブラウザで動作するWebRTCに基づく最近の実装があります: https://github.com/feross/webtorrent

15
Laurent VB

いいえ、違います。

これは、WebSocket仕様がHTML5およびJavaScriptの範囲外にあるためです;-)とはいえ、「[プログレッシブ/今後の]ブラウザーでネイティブにサポートされている機能を使用する」という質問を開くと...

...まだいいえ :-)

これは、制限付きで設定するためにWebSocketが特別なハンドシェイクを必要とするためです。それは、誰もが自由に利用できるオープンTCPフェストではありません。アプローチはどちらかが必要になります

  1. webSocketリクエストを受け入れるように変更するクライアント(およびクロスサイトアクセスの問題を処理するクライアント)

  2. または、より現実的には、跳ね返るサーバー

32
user166390

これは、 Chrome Apps APIchrome.socket および chrome.fileSystem を使用して可能です。

Google Chromeには少なくとも1つの純粋なJavaScript実装があります JSTorrent

16
Yahor

今日これを実行できない理由はありません。 BitTorrent/uTorrentの両方に、バイナリフレームとのWebSocket接続をサポートするコードがあります。ただし、現在はサポートなしでコンパイルされています(政治的/製品的な理由によります)。私はBitTorrentで働いていました。別のエンジニア( Arty )がサポートを書きました。しばらくの間、モバイルSafariからiPadに急流をダウンロードできることは本当にクールでした。 (おかしなことにGoogleドライブに直接保存します)

HTTPトラッカーは、Access-Control-Allow-Originヘッダーを送信するように構成できます。

また、トラッカーアナウンスプロトコルは、「キー」フィールドのビットを使用して、クライアントがWebSocket接続を受け入れることを示すことができます。次に、「typewant」のような特別な引数は、アナウンス応答がそのビットを送信したクライアントのみを返すことを示すことができます。

同様にトラッカープロトコルを拡張して、WebRTC P2P DataChannel接続のネゴシエーションをサポートすることもできるため、ブラウザー<->ブラウザーに直接接続することができます。

今のところ、chrome.socketプラットフォームAPIと jstorrent 、a chromeパッケージアプリケーション(主にChromeOS用に設計されています))があります。

9
kzahel

これらは厳密にクライアントサーバーであるため、WebSocketを使用することはできません。しかし、今後のWebRTC標準は、主にオーディオ/ビデオ会議を対象としていますが、一般的なクライアント/クライアントデータ転送用の provision があります。この規定が最終版になれば、ブラウザ間の一般的なピアツーピアデータ転送を実装する実行可能な方法が得られます。

8
CAFxX

私はパーティーに遅れましたが、この質問はまだGoogleの結果のトップの中にあるので、とにかく答えます。

Btapp.js を使用して、BitTorrent関連のWebアプリまたはブラウザー拡張機能を記述できます。これは、 BitTorrent Torque によって提供されるJavascriptインターフェイスを使用します。 connectメソッドを呼び出すと、ユーザーはBitTorrent Torqueをインストールするように求められます。ストリーミングメディア、ドラッグアンドドロップによる共有など、既存のプロジェクトをチェックアウトすると、クールなことが起こります。

依存関係のないソリューションについては、Nick Russlerによって言及されたソリューションがまだ唯一の実行可能なオプションのようです。

3
3
jkeogh