web-dev-qa-db-ja.com

低レベルのデータ通信のためのWebRTCとWebSocketsの違いは何ですか

WebRTCとWebSocketsの違いを理解して、どのシナリオが何を必要とするかをよりよく理解できるようにしています。私は2人の当事者(主にWebベースですが、1つは専用サーバーアプリケーションである可能性があります)が互いに話し合うという広い考えに興味があります。

仮定:

  • 明らかにアドホックネットワークに関して言えば、WebRTCはICEプロトコル/メソッドをネイティブにサポートしているため、勝っています。

質問:

  • ブラウザーでの2つの既知の当事者間の直接通信に関して、マルチメディアデータの送信に依存せず、整数データの送信のみに関心がある場合、WebRTCはデータの暗号化以外の利点をwebSocketsよりも提供しますか?
  • ブラウザベースのクライアントと通信する専用サーバーに関して、どのプラットフォームが私に利点をもたらしますか? WebRTCサーバーをコーディングする必要があります(これはブラウザーの外で可能ですか?)、またはWebSocketサーバーをコーディングする必要があります(グーグル検索を行うとこれが可能であると思います)。
42
lvicks

WebRTCはメディアトランスポートを指定していますRTP ..これは特定の状況下でP2Pを機能させることができます。どのような場合でも、webRTCセッションを確立するには、シグナリングプロトコルも必要になります。そして、そのWebSocketはおそらく選択肢です言い換えれば、リアルタイムメディアをストリーミングしたくない場合は、おそらくWebSocketが適しています。

20
oberstet

重要な違いが1つあります。WebsocketはTCP経由で動作し、WebRTCはUDP経由で動作します。実際、WebRTCは、STUN、ICE、DTLSなどのいくつかの追加機能と、適応ジッターバッファー、AEC、AGCなどの内部VoIP機能を備えたSRTPプロトコルです。

したがって、Websocketは信頼できる通信用に設計されています。確実に送信する必要があるデータを送信する場合は、これを選択するのが適切です。

WebRTCを使用する場合、送信されるストリームは信頼できません。一部のパケットはネットワークで失われる可能性があります。財務処理などの重要なデータを送信する場合、悪いことはあります。オーディオまたはビデオストリームを送信するときに同じ品質の問題が発生しても、目立った品質の問題なしに一部のフレームが失われる可能性があります。

WebRTCを介してデータチャネルを送信する場合は、ネットワークでデータフレームが失われた場合にデータを復元するための前方エラー訂正アルゴリズムが必要です。

41
Nick

質問1:はい。 WebRTCのDataChannel部分は、ブラウザ間にピアツーピアチャネルを作成して、必要な生データを送受信できるため、この場合に利点があります。 WebSocketを使用すると、サーバーを使用して両方のパーティを接続する必要があります。

質問2前の応答で言ったように、サーバーとクライアントの通信が必要な場合はWebSocketの方が適しています。これを行うための多くの実装があります(つまり、 jWebSocket )。サーバーにWebRTC DataChannelとの接続を確立するためのサポートを追加するには、数日かかることがあります。 :)

9
nakib