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

StackOverflow https://stackoverflow.com/questions/1032006

  •  06-07-2019
  •  | 
  •  

質問

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

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

注:Javaアプレットはカウントされません。興味があるのは標準のブラウザテクノロジーだけです。

役に立ちましたか?

解決

知的な推測の代わりに、情報に基づいた答えがあります:

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

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

jrh

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

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

jrh

他のヒント

2012年10月17日更新:この機能はChrome Stable v22に存在します。 Chromeでこの機能を使用するには、chrome:// flagsで2つのフラグを有効にする必要があります:

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

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


更新: Ericcson Labsのエンジニアは、 HTML5ピアツーピア会話型ビデオ

彼らのブログには、実際に動作している技術のデモンストレーションがあり、図と技術の仕組みに関する説明があります。

彼らはこれを安定させ、WebKitリポジトリにコミットする作業を行っています。

はい、最後に。

この記事の執筆時点(2017年)で、WebRTCは現在、ほとんどの最新ブラウザーの標準部分(使用中のブラウザーの約70%)であり、マルチメディアストリーミング、ピアツーピア、およびホールパンチングが可能です。

WebRTCのドキュメント、サンプルコード、および実例は、 html5rocks.comにあります。

caniuse.com および html5rocks.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年第3四半期): iOS 11向けChrome、iOS 11向けSafari 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%で利用可能になるはずです。

これが難しいのにはいくつかの理由があります:

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

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

ただし、Websocketの上に適切なネットワークスタックを実装するのは簡単です。ただし、すべての通信はサーバーを介して行われる必要があります。長いポーリングを使用してこれを実行しました(Uniの友人が長いポーリングを使用して完全なTCP / IPスタックを作成しました)。

2番目のharshath.jr:サーバーをディレクトリとして機能させることができます(接続されている各エージェントの「オリジン」を公開します。オリジンは draft-abarth-origin で、スキームは「ws」または「wss」のいずれかです)。その後、ピアツーピアWebSocket接続を開始できます。 SOP は、 CORS 。もちろん、これは、各エージェント(つまりブラウザー)が独自のWebSocketサーバー(à la Opera Unite)を埋め込む必要があることを意味します。

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

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

Webソケットの全体的なアイデアは、ファイアウォールとプロキシの問題を解決することでした http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top