HTML5では、WebアプリでピアツーピアのHTTP接続を確立できますか?


100

中央サーバーの助けを借りて、同じWebアプリの他のユーザーとの直接接続を作成できるWebアプリを作成することは可能ですか?UDPホールパンチングに似たプロセスを想像しています。

HTML5の新しいWebSockets APIについて読みましたが、全二重接続を開始する前に、WS互換サーバーとの接続を開始する必要があります。クライアント間の直接接続を確立するプロセスについてさらに考えています。サーバーは最初のハンドシェイクにのみ関与します。

注:Javaアプレットはカウントされません。興味があるのは、標準のブラウザ技術だけです。


回答:


109

インテリジェントな推測の代わりに、これは情報に基づいた答えです:

HTML 5は、JavaScriptからのピアツーピア接続を許可する予定ですが、これらの接続はRAW TCPではありません。

完全な仕様はhttp://dev.w3.org/html5/websockets/にあります。

jrh

編集:ピアツーピア接続への特定の参照を使用して、次のリンクを確認してください:

機能はまだ交渉中であることに注意することが重要です。「ローカルチャット」ウェブアプリを作成できると便利です。

jrh


45
+1 =>「インテリジェントな推測の代わりに、これは情報に基づく回答です」
Ionuț G. Stan

2
WebSocketはどのホストにも接続できますか?スペックにはサーバーのみと書かれています。
ヘゲモン

4
Web SocketsはHTML5の一部ではなく、スタンドアロンの仕様です。
セルゲイイリンスキー2009年

8
WebSocketはピアツーピアではありません。これらは依然としてクライアントツーサーバーであり、ブラウザはサーバーの半分を実装していません。
アルニタク

4
webSocketsはピアツーピアではありませんが、最近の仕様であるWebRTCはこのために設計されています。
Eric Mill、

29

アップデート10/17/2012:この機能はChrome Stable v22に存在するようになりました。Chromeでこの機能を使用するには、chrome:// flagsで2つのフラグを有効にする必要があります。

  • MediaStreamを有効にする
  • PeerConnectionを有効にする

次に、AppRTCデモページにアクセスして、デモを試すことができます。ピアツーピア機能を使用してデバイスキャプチャを有効にするようにChromeを設定する方法の詳細については、WebRTC-デモの実行ページをご覧ください。


更新: Ericcson Labsのエンジニアは、WebKitビルドに概念実証を行い、 HTML5 Peer to Peer Conversational Videoを実行ます

彼らは彼らのブログで実際の技術のデモンストレーション、ならびに技術がどのように機能するかについての図と説明を持っています。

彼らはこれを安定させ、WebKitリポジトリにコミットすることに取り組んでいます。


これがWebKitになるまでの期間はどれくらいになると思いますか?
Alistair

私は知らない。Ericcsonに確認することをお勧めします。リンクは私の答えです。彼らのフォーラムには、いつになるかについての情報があるかもしれません。
jmort253 2012

ブラウザーごとの特別な構成/フラグ設定を要求することは、機能するWeb標準仕様の一部と同じではありません。それがHTML5、WebSocket、またはWebRTCに含まれていない場合は、ハックなしでピアツーピアを行うことはできません。幸い、WebRTCは正しい方向に向かっているようです。
Beejor 2017

11

はい、やっと。

これを書いている時点(2017年)で、WebRTCは最近のほとんどのブラウザー(使用中のブラウザーの約70%)の標準部分になり、マルチメディアストリーミング、ピアツーピア、ホールパンチングが可能になりました。

WebRTCのドキュメント、サンプルコード、ライブサンプルは、html5rocks.comにあります。ます。

caniuse.comhtml5rocks.comによると、次のブラウザーはWebRTCをサポートしています。

完全サポート: Edge 14、Firefox 22、Firefox Android 55
部分サポート: Android Browser 56、Chrome 20、Chrome Android 29、Edge 12、Firefox 17、Opera 18、Opera Android 20、Opera Mobile 12、UC Browser Android 11.4
今後のサポート( 2017年Q3): Chrome for iOS 11、Safari 11 for iOS 11およびOS X 10.11
サポートなし: IE、IE Mobile、Opera Mini

Safari 11はまだリリースされておらず、iOS 11またはOS X 10.11が必要であるため、WebRTCの飽和率はAppleデバイスで制限されています。WebRTCは、過去のアップグレード傾向から予測していますが、2018年までにiOSデバイスの約75%、2020年までに100%で利用可能になるはずです。


4

これがトリッキーになる理由はいくつかあります。

  1. ファイアウォール(プレーンNATだけでも)は、HTTPよりもはるかに低いプロトコル層でこの種の接続を困難にします。私のITセキュリティの帽子をかぶると、これはWebサイトにアクセスするだけでマシンの任意のポートを開く素晴らしい方法のように思えるので、事実上すべての企業のITシステムによって積極的にブロックされます。
  2. HTTPは本質的にクライアント/サーバープロトコルです。ロングポーリング(および他のいくつかの手法)を使用して二重通信をシミュレートすることはかなり簡単ですが、特に効率的ではありません。
  3. これはXSS攻撃に大きな穴を開けます。

WebSocketsは、これらの問題の2番目を解決するように設計されていますが、(意図的に、私は期待しています)他の2つは解決していません。彼らは、HTML5仕様でピアツーピアについて話すとき、クライアントとクライアントの間ではなく、サーバーとクライアントの間の全二重通信について話しています。

ただし、Webソケットの上に適切なネットワークスタックを実装するのは簡単です。ただし、すべての通信をサーバー経由で行う必要があるという前提があります。私はこれをロングポーリングを使用して実行したことを確認しました(Uniの友人がロングポーリングを使用して完全なTCP / IPスタックを作成しました)。


P2Pはクライアントサーバーではありません。前者はピア間でトラフィックを移動し、後者はサーバーを介して1つ以上のクライアントに移動します。P2Pの主な利点は、クライアント間で大量のトラフィックが送信される間、サーバーが仲人として機能できることです(プライバシーと帯域幅の恩恵です)。
Beejor 2017

0

私はharshath.jrを2番目に使用します。サーバーをディレクトリとして機能させることもできます(接続されている各エージェントの「オリジン」を公開します。起点は、draft-abarth-originのように、scheme + host + port で、スキームは「ws」です。または「wss」)。その後、ピアツーピアWebSocket接続を開始できます。CORSのおかげで作業中のSOP。もちろん、これは各エージェント(ブラウザなど)が独自のWebSocketサーバー(Opera Uniteの1つ)を組み込む必要があることを意味します。

それまでは、XMPP / IRC / etc.-wayを実行します。ピアツーピア接続ではなく、中央サーバー(またはネットワーク)へのWebSocket接続で、接続されたエージェントにメッセージを渡します(最終的には特定のWebSocketを使用します)サブプロトコル」)

編集:これはすべて実際にはHTML5の範囲外であることに注意してください(これらのすべてはかつてHTML5の一部でしたが、独自の仕様に分割されました)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.