WebRTCを用いて、お互いのPeerが接続してメッセージを送る方法は簡単です。
1. 自分のSDPと相手のSDPを取得する。
2. 取得したSDPを設定する。
3. メッセージを送信する。※今回はテキスト
とするだけです。
[解説]
以前説明した通り、Peerどうしが接続するためには、接続相手のアドレスを知る必要があります。このアドレスを知りたい場合には、Stunサーバーを利用するのでした。また、接続される側も、接続してくるPeerのアドレスがわかっていれば、「UDPパンチ」などを用いて、接続できる可能性をあげる事ができるのは、ご存知のことでしょう。以前解説したとおりです。
WebRTCも同様の手法を取っています。「接続される側」、「接続する側」のアドレスを前もって、WebRTCの知らせる事で、Peer同士が接続できるようになります。
※注意点
WebRTCでは、「接続される側」、「接続する側」のアドレスを、Peerに知らせる方法は提供されていません。
独自に実装する必要があります。WebSocketを利用する方法流行っているみたいです!!
[接続の処理の流れ]
実際の処理の流れを見てみましょう。接続が完了すれば、メッセージを送信できるようになります。○自分のSDPを取得/設定
#接続を要求する側
O-1. RTCPeerConnectionを生成する。
O-2. RTCPeerConnection#createOffer()をコールする。
O-3. RTCPeerConnection#setLocalDescription()をコールして設定する
A-1. RTCPeerConnectionを生成する
A-2. RTCPeerConnection#createAnswer()をコールする
A-2. RTCPeerConnection#createAnswer()をコールする
A-3. RTCPeerConnection#setLocalDescription()をコールして設定する
※A-2の操作は先に接続要求してきている、SDPを設定しておく必要があります
○相手のSDPを設定する
#接続を要求する側/#接続を受け入れる側[サンプルコード]
○サンプルコード
WebRTCを利用して、テキストを送る事ができます。
※通常は、SDPデータを交換するのに、WebSocketを使います。しかし、今回のサンプルでは、WebSocket用のサーバーを用意する必要はありません。その部分は手動で行うように作りました。
[次回]
....次回は、WebRTCを使って、何かします。たぶん、Torrentの考え方を応用したサンプルを紹介します。
[追記]
返信削除記載し忘れていませんてしたが、接続を開始する方向も重要です。
例えば、Natには、
* 制限Natからフルコーンへの接続は可能です。
* フルコーンから制限Natへの接続は不可能です。
といった制限があります。
両方ともフルコーンの場合はどちらから接続してもよいのです。しかし、どたらかが、制限Natの場合は、制限Natからフルコーンへ接続してあげないと、上手くShakehandできないのです。
WebRTCでは、この辺りはフレームワークが適当に処理してくれているのでしょう。多分..。
かなりハショっている。実際に組むときには、シェークハンドは、以下のサンプルに従う事。
返信削除http://dev.w3.org/2011/webrtc/editor/webrtc.html#examples-and-call-flows