2015-11-28 4 views
5

カスタムWebRTCピアを開発する必要があります(Webブラウザと非ブラウザの間でオーディオまたはデータ接続を確立する必要があります)。しかし、私は握手フェーズの適切で明確な記述を見つけるのに苦労します。WebRTCピアネゴシエーションのワークフローはどのように見えますか?

How to create data channel in WebRTC peer connection?などの質問への回答は、あまり詳しく説明されていないため、完全には役に立ちません。具体的には、SDPの内容については何も言わない。

誰でもこれを説明したり、良い文書をお勧めしますか?

+0

あなたは、シグナリングを参照している...あなたはのWebRTC塩の粒と(今のように書か少なくとも何でも)について読むすべてを取る、変更するには希少で受けるのですか? – nick

+0

はい。同僚に最初に提供/回答するためのチャンネルを構築するのは私の役割だと理解していますが、これらのメッセージをどのように構築するかについての詳細な指示はありません。 – mspanc

+1

ICEから開始:https://tools.ietf.org/html/rfc5245 - SDPの基本的な瞬間についても説明します。基本的には、ICEとSTUN/TURNから始め、次にSDPを続ける必要があります。その段階で、あなたのアプリケーションはSDPパケットと交換してシグナルステージを通過することができます。その後、クライアントにDTLSプロトコルを実装する必要があります。そして、SRTP/SCTP。 – fycth

答えて

8

Here is a page with some graphs showing how the signaling process works。基本的には、まず、いくつかのクライアント側のものを設定します。

  • PeerConnectionFactoryを。 PeerConnectionsを生成するために、
  • PeerConnection;あなたが望む別のピアへの接続ごとに1つ(通常1)、
  • MediaStream;クライアントデバイスからオーディオとビデオを接続します。

その後、発信者側のSDPoffer

peerConnection.createOffer(); 

を生成し、呼び出し先に送信します。呼び出し先がこのoffer

peerConnection.setRemoteDescription(insert-the-offer-here); 

を設定し、SDPanswer

peerConnection.createAnswer(); 

を生成し、呼び出し元に送信します。発信者はこれを受け取りanswerと設定します。

peerConnection.setRemoteDescription(insert-the-answer-here); 

呼び出し元と呼び出し先の両方は、発信者のofferが設定されている

onAddStream() {...} //needs to be implemented in your code 

呼び出し先への呼び出しと呼び出し先のanswerが設定されている発信者を取得します。このコールバックは、接続の開始を知らせます。
また、firewallNATの問題を避けるためにICESTUN/TURN)を使用することもできますが、これはオプションです。プロダクションコードでは、とにかく実装したいと思うかもしれません。

注:のWebRTCのドキュメントは