web-dev-qa-db-ja.com

WebRTCおよびWebsocket。違いはありますか

サーバーとクライアント間の通信はWebソケットまたは他のネットワークプロトコルを介して行われますが、WebRTCはオーディオとビデオをデコード/エンコードするAPIであると想定していますか?私は少し混乱しています。 WebRTCには独自の通信プロトコルがありますか?

50
AndrewMcLagan

WebRTCには2つの側面があります。

  1. アプリがカメラとマイクのハードウェアにアクセスできるようにするJavaScript API(getUserMedia)。このアクセスを使用して、単純にストリームをローカルに表示するか(おそらく 適用効果 )、またはネットワーク経由でストリームを送信できます。サーバーにデータを送信するか、使用することができます...
  2. PeerConnection、ブラウザが直接ピアツーピアソケット接続を確立できるようにするAPI。他の人のブラウザへの直接接続を確立し、データを直接交換できます。これは、大量のデータの中継をサーバーで処理する必要がない、ビデオなどの高帯域幅データに非常に役立ちます。

デモ を見て、WebRTCの両方の部分が動作していることを確認してください。

簡単に言うと:

  • WebSocketを使用すると、ブラウザーとWebサーバー間の全二重通信が可能になります。
  • WebRTCのPeerConnectionは、2つのブラウザ間の全二重通信を可能にします。
83
josh3736

WebRTCは、メディアトランスポートにRTP(UDPベースのプロトコル)を使用しますが、通信のセットアップには帯域外信号チャネルが必要です。信号チャネルのオプションの1つはWebSocketです。

13
oberstet

peerConnectionの代わりに、WebRTCデータチャネルドラフトも参照できます。 http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol- which基本的に双方向UDPです。これは、tcp接続の「ネガティブ」な側面がないため、WebSocketsに代わる非常に貴重な代替手段になります。

4
3rdEden

いいえ、シグナリングはWebRTCによって定義されていません。

IETFによる投稿で、そうでない理由を説明しています。 http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html

これは、ネットワーク情報の交換方法を自由に選択できることを意味します。つまりwebsocket、HTTP、さらには電子メールを使用できますが、それは少し苦労します:)

2
Felix Hagspiel