web-dev-qa-db-ja.com

websocketはp2p(ブラウザーからブラウザー)通信を許可しますか?

ブラウザー間の通信について尋ねるときを明確にするために、メッセージを転送する間にサーバーがないことを意味します。このようなものをゲームに実装したいと思います。 websocketsのp2pが不可能な場合、同様の選択肢がありますか?どんな助けも大歓迎です。

64
Xavier

いいえ。ブラウザはWebSocket接続のみを開始でき、受信はできません。 W3CブラウザーAPI仕様 は、アウトバウンド接続の開始方法のみを定義します。

WebSocket接続の開始と受け入れの両方を行うアプリケーションを作成できますが、ブラウザーはこれを行いません。

Pusher App を見ると、複数のクライアントでWebSocketsアプリケーションを構築するのに使用できます。このサービスは、最大20の同時WebSocketクライアントを無料で提供します(より高いスケーリングに料金を支払うことができます)。

更新

WebRTC プロトコルとAPIは急速に進歩しており、2つのピア間でデータチャネルを確立することができます(初期NATトラバーサルとセットアップ)。

50
kanaka

理論的には WebRTC DataChannel で可能です:

RTCDataChannelは、高性能、低遅延、任意のデータのピアツーピア通信のためのWebRTC APIです。 APIはシンプルです(WebSocketに似ています)が、ブラウザー間で直接通信が行われるため、リレー(TURN)サーバーが必要な場合でもRTCDataChannelはWebSocketよりはるかに高速です(ファイアウォールやNATに対処するための「ホールパンチ」が失敗した場合)。

「理論上」それはまだ安定したブラウザーでサポートされておらず、ブラウザーの1つが symmetric NAT の背後にある場合はまだリレーサーバー(TURN)が必要だからです。それにもかかわらず、それは本当に有望な機能です。

更新:Chrome 26とFirefox 22はデフォルトでRTCDataChannelをサポートし、media.peerconnection.enabledを設定してWebRTCを有効にするとFirefox 19-21をサポートしますtrue(about:config)。

32
Joel Richard

私はwebsocketとpeer 2 peerについて読んでいて、 PeerJS を見つけました。

まだ何も作成していませんが、例からは有望に見えます。

7
shadownrun

今では可能ですが、現在はChrome、FF、およびOperaのみがサポートされています(デスクトップ)。

PeerJSjs-platform-p2p などのように、今すぐWebの周りにいくつかのライブラリがポップアップし始めています。

1
eric.itzhak

シンプルで信頼性の高いクロスブラウザーサポート方法は、 http://httprelay.io with AJAX呼び出しを使用することです。また、1対多の通信を実装し、ゲーム開発。

0
Jonas