275

だから私は、ビデオ、オーディオ、およびテキストを許可するチャット アプリを構築しようとしています。Websockets と WebRTC の調査に時間を費やして、どちらを使用するかを決定しました。WebRTC を備えたビデオおよびオーディオ アプリはたくさんあるので、これは合理的な選択のように思えますが、他に考慮すべき点はありますか? あなたの考えを自由に共有してください。

次のようなもの:

  • 新しいため、WebRTC は一部のブラウザーでのみ使用できますが、WebSockets はより多くのブラウザーで使用できるようです。

  • スケーラビリティ - Websockets はセッションにサーバーを使用し、WebRTC は p2p のようです。

  • 多重化/複数のチャットルーム - Google+ ハングアウトで使用され、実装方法のデモ アプリをまだ見ています。

  • サーバー - Websockets は、複数のマシンにまたがってスケーリングするために RedisSessionStore または RabbitMQ を必要とします。

4

8 に答える 8

331

WebRTC は、ビデオ、オーディオ、および任意のデータの高性能、高品質の通信用に設計されています。つまり、あなたが説明したものとまったく同じアプリの場合です。

WebRTC アプリには、ネットワークとメディアのメタデータを交換できるサービス (シグナリングと呼ばれるプロセス) が必要です。ただし、シグナリングが行われると、ビデオ/オーディオ/データがクライアント間で直接ストリーミングされるため、中間サーバーを介したストリーミングのパフォーマンス コストが回避されます。

一方、WebSocket は、クライアントとサーバー間の双方向通信用に設計されています。WebSocket を介してオーディオとビデオをストリーミングすることは可能ですが (たとえば、こちらを参照)、テクノロジーと API は、WebRTC のように効率的で堅牢なストリーミング用に本質的に設計されていません。

他の返信が言ったように、WebSocket はシグナリングに使用できます。

私はWebRTC リソースのリストを管理しています: WebRTC に関する 2013 Google I/Oプレゼンテーションを見ることから始めることを強くお勧めします。

于 2013-09-16T09:57:49.357 に答える
77

WebSocket:

  • 批准された IETF 標準 (6455) は、最新のすべてのブラウザーと web-socket-js ポリフィルを使用するレガシー ブラウザーをサポートします。

  • HTTP 互換ハンドシェイクとデフォルト ポートを使用するため、既存のファイアウォール、プロキシ、および Web サーバー インフラストラクチャでの使用がはるかに簡単になります。

  • はるかに単純なブラウザー API。基本的に、いくつかのコールバックを持つ 1 つのコンストラクターです。

  • クライアント/ブラウザからサーバーへのみ。

  • TCP で構築されているため、信頼できる順序どおりのトランスポートのみをサポートします。これは、パケット ドロップが後続のすべてのパケットを遅延させる可能性があることを意味します。

WebRTC:

  • Chrome と Firefox でサポートされ始めたばかりです。MS は互換性のないバリアントを提案しました。DataChannel コンポーネントは、Firefox と Chrome の間でまだ互換性がありません。

  • WebRTC は、理想的な環境ではブラウザ ツー ブラウザですが、その場合でもほとんどの場合、接続をセットアップするためにシグナリング サーバーが必要です。現在、最も一般的なシグナリング サーバー ソリューションは WebSocket を使用しています。

  • トランスポート層は、接続が適切かどうか、および/または信頼できるかどうかを選択できるアプリケーションで構成可能です。

  • 複雑で多層的なブラウザー API。より単純な API を提供する JS ライブラリがありますが、これらは新しく、急速に変化しています (WebRTC 自体と同様)。

于 2013-09-14T19:28:24.157 に答える
44

webRTC または websocket? 両方を使用しないのはなぜですか。

ビデオ/オーディオ/テキスト チャットを構築する場合、webRTC はピア ツー ピア テクノロジを使用し、接続が確立されて実行されると、サーバー経由で通信を渡す必要がないため、間違いなく良い選択です (TURN を使用しない限り)。

webRTC 通信を設定するときは、何らかのシグナリング メカニズムを含める必要があります。ここでは Websockets が良い選択かもしれませんが、webRTC はビデオ/オーディオ/テキスト情報を取得する方法です。チャット ルームはシグナリングで実現されます。

しかし、あなたが言及したように、すべてのブラウザーが webRTC をサポートしているわけではないため、websocket はそれらのブラウザーの適切なフォールバックになる場合があります。

于 2013-09-14T08:18:30.137 に答える
13

websocket と webrtc を比較するのは不公平です。

Websocket は TCP の上に基づいています。tcp とは異なり、websocket パケットのヘッダー情報からパケットの境界を検出できます。

通常、webrtc は websocket を利用します。webrtc のシグナリングは定義されていません。使用するシグナリングの種類はサービス プロバイダ次第です。これは、SIP、HTTP、JSON、または任意のテキスト/バイナリ メッセージです。

シグナリング メッセージは、websocket を使用して送受信できます。

于 2017-02-16T09:43:41.793 に答える