Sora によるピア接続の流れ

Sora におけるピア接続の流れ

この節では Sora を使うピア接続の流れを説明します。 Sora iOS SDK を使えば詳細を知らなくてもアプリケーションを作れますが、 Sora とクライアントの挙動を理解しておくとトラブルに対処しやすいでしょう。

Sora は WebSocket でシグナリングの通信を行い、シグナリングメッセージを JSON フォーマットで送受信します。 WebSocket の接続が切れるとシグナリングを継続できなくなります。

クライアントは WebSocket で Sora に接続し、以下に示す connect メッセージを送信します (シグナリングメッセージの詳細は Sora のドキュメント を参照してください) 。

connect メッセージ例:

{
    "type": "connect",
    "role": "upstream",
    "channel_id": "Spam",
    "metadata": "1234abcd"
}

Sora は connect メッセージを受信すると認証を行います。 認証が成功すればクライアント ID (1 接続についてユニークな値) を発行し、クライアント ID を含む offer メッセージを返します。

offer メッセージ例:

{
    "type": "offer",
    "sdp": "<Offer 用 SDP>",
    "client_id": "<ユニークな ID>"
}

offer メッセージには Offer SDP が含まれます。 クライアントはこの段階でピア接続オブジェクト (WebRTC ライブラリの RTCPeerConnection オブジェクト) を生成し、 Offer SDP を remote description にセットします。 また offer メッセージは ICE に関する設定を含む場合があり、その設定はピア接続オブジェクトに反映されます。

このときにピア接続オブジェクトによって ICE candidate が生成されたら、クライアントは candidate メッセージを生成して ICE candidate の内容を Sora に送信します。

Offer SDP が無事に remote description にセットされたら、クライアントは Answer SDP を生成します。 Answer SDP はピア接続オブジェクトの local description にセットされ、それが成功すれば Answer SDP を含む answer メッセージを Sora に送信します。

answer メッセージ例:

{
    "type": "answer",
    "sdp": "<Answer 用 SDP>"
}

ICE 接続が成功すればピア接続完了です。 ピア接続中は接続状態などの情報がシグナリングで通信されます。 ICE 接続もしくはシグナリング接続が解除されるとピア接続は終了します。

© Copyright 2018-2024, Shiguredo Inc. Created using Sphinx 7.3.7