2013-09-24 14 views
5

私はWebRTCとWebsocketsの世界では新しいです。私は1対1のウェブゲームを作ることに興味があります。 問題はちょうど:クライアントから他のクライアントに簡単な変数(主に数値)を送る方法は?WebRTCよりも速いWebソケット?

私は(socket.ioを介して)websocketsを持つNode.jsサーバーを持っています。

  • WebSocketを使用:: だから、クライアントのために、私は2つのソリューションを持っているクライアント1プッシュサーバにvarと サーバークライアント2にVARをプッシュするこのソリューションは、私は簡単に自分のアプリケーションを適応させることを可能にします1つのゲームで多くのユーザーが利用できます。
  • WebRTCの使用:オファーと回答は、Webソケットを使用してサーバー経由で送信されます。その後、データチャネルを介してクライアント2にクライアント1つのプッシュVARを(私はgetUserDataを必要としない)

それは彼がより多くのクライアントを管理することができ、サーバの作業を、容易にするので、私はのWebRTCを使用して好みます。 私は比較する2つのソリューションをセットアップし、大きな驚きました! WebSocketはWebRTCよりも非常に高速です!

私のテストは単純です:Three.jsを使用して回転するキューブだけで、最初のクライアントは各フレーム(毎秒60枚)で少し回転し、回転結果をクライアント2にプッシュします。受信時に、クライアント2回転とレンダリングを更新します。

ウェブソケットを使用すると結果は完璧ですが、WebRTCではクライアント2が5 FPSのように遅くなります。

問題は私がそれをやっている方法ですか?それは普通ですか? 私はFirefox上でlocalhostに取り組んでいます。

答えて

8

WebRTCに問題があります。 Chrome上のWebRTC DataChannel実装(おそらくfirefoxの場合も同じ)は約30 kbpsに制限されています。私はその理由を知らないのですか?インターネットに氾濫しない何か。この制限を回避するためのハックがあります。これを設定する前に、SDP内の "B ="フィールドを手動で変更します。

ただし、... WebRTCはP2Pの信頼できない通信です。つまり、メッセージが失われず、2人のプレイヤーが同じイベントや環境を遵守するように特別な注意を払わなければなりません。私はWebSocketを使って、簡単に理解してサポートしてくれるからです。ゲームがバイラルになるなら、私は可能な最適化としてWebRTCを考えます。

しかし、このゲームを楽しんでいれば、WebRTCを選択すると便利なことがたくさんあります。

あなたはのWebRTCは、実際のプロジェクトで使用されている方法の例を見たい場合を見てみ取る: http://viblast.com/demo

NBを! Chromeの31-32時間前後にSCTPベースのデータチャネルが導入された後、帯域幅の調整がなくなり、信頼性の高いデータチャネルを可能にする新しい動作モードがあります。

+1

Chrome 31からは、信頼できるデータチャネルを可能にするFirefoxと同じように、デフォルトでSCTPが使用されていますが、実際には、信頼性の低い転送のパケットが実際にはほとんどありません。また、私が理解しているように、SCTPはダイナミックな輻輳制御を意味し、帯域幅の固定キャップではありません。 –

+0

@SamDuttonこれはWebRTCに関する別の問題を実際に思い起こさせます。まだ初期段階にあり、APIや動作の変更は珍しくありません。 –

+0

うわー、ありがとう!本当に、それはまさに私が何度も何も検索せずに検索したものです。 – Bambou

関連する問題