WebRTCとWebSocketsの違いを理解して、どのシナリオが何を必要とするかをよりよく理解できるようにしています。私は2人の当事者(主にWebベースですが、1つは専用サーバーアプリケーションである可能性があります)が互いに話し合うという広い考えに興味があります。
仮定:
質問:
WebRTCはメディアトランスポートを指定していますRTP ..これは特定の状況下でP2Pを機能させることができます。どのような場合でも、webRTCセッションを確立するには、シグナリングプロトコルも必要になります。そして、そのWebSocketはおそらく選択肢です言い換えれば、リアルタイムメディアをストリーミングしたくない場合は、おそらくWebSocketが適しています。
重要な違いが1つあります。WebsocketはTCP経由で動作し、WebRTCはUDP経由で動作します。実際、WebRTCは、STUN、ICE、DTLSなどのいくつかの追加機能と、適応ジッターバッファー、AEC、AGCなどの内部VoIP機能を備えたSRTPプロトコルです。
したがって、Websocketは信頼できる通信用に設計されています。確実に送信する必要があるデータを送信する場合は、これを選択するのが適切です。
WebRTCを使用する場合、送信されるストリームは信頼できません。一部のパケットはネットワークで失われる可能性があります。財務処理などの重要なデータを送信する場合、悪いことはあります。オーディオまたはビデオストリームを送信するときに同じ品質の問題が発生しても、目立った品質の問題なしに一部のフレームが失われる可能性があります。
WebRTCを介してデータチャネルを送信する場合は、ネットワークでデータフレームが失われた場合にデータを復元するための前方エラー訂正アルゴリズムが必要です。
質問1:はい。 WebRTCのDataChannel部分は、ブラウザ間にピアツーピアチャネルを作成して、必要な生データを送受信できるため、この場合に利点があります。 WebSocketを使用すると、サーバーを使用して両方のパーティを接続する必要があります。
質問2前の応答で言ったように、サーバーとクライアントの通信が必要な場合はWebSocketの方が適しています。これを行うための多くの実装があります(つまり、 jWebSocket )。サーバーにWebRTC DataChannelとの接続を確立するためのサポートを追加するには、数日かかることがあります。 :)