Sora クライアント

概要

Sora SDK や Sora クライアントの開発者に向けた資料です。

クライアント側の終了処理条件

RTCPeerConnectionState が failed になる

全ての接続において RTCPeerConnectionStatefailed になったタイミングで "type": "disconnect" は送らず、 クライアント側で終了処理をしてください。

WebSocket のみ

  • RTCPeerConnectionStatefailed になった

    • 終了処理に入る

  • WebSocket onclose が上がった

    • 終了処理に入る

  • WebSocket onerror が上がった

    • 終了処理に入る

WebSocket と DataChannel

  • RTCPeerConnectionStatefailed になった

    • 終了処理に入る

  • WebSocket onclose が上がった

    • "type": "switched" が送られてきていない

      • 終了処理に入る

    • "type": "switched", "ignore_disconnect_websocket": true が送られてきていた

      • 何もしない

    • "type": "switched", "ignore_disconnect_websocket": false が送られてきていて、 RTCPeerConnectionStatefailed になっている

      • 終了処理に入る

    • "type": "switched", "ignore_disconnect_websocket": false が送られてきていて、 RTCPeerConnectionStatefailed になっていない

      • DataChanel で "type": "disconnect", reason: "WEBSOCKET-ONCLOSE" を送る事を試みる

      • 終了処理に入る

  • WebSocket onerror が上がった - "type": "switched" が送られてきていない

    • 終了処理に入る

    • "type": "switched", "ignore_disconnect_websocket": true が送られてきていた

      • 何もしない

    • "type": "switched", "ignore_disconnect_websocket": false が送られてきていて、 RTCPeerConnectionStatefailed になっている

      • 終了処理に入る

    • "type": "switched", "ignore_disconnect_websocket": false が送られてきていて、 RTCPeerConnectionStatefailed になっていない

      • DataChanel で "type": "disconnect", reason: "WEBSOCKET-ONERROR" を送る事を試みる

      • 終了処理に入る

DataChannel のみ

DataChannel の終了

Sora SDK の切断タイムアウトのデフォルト値は 3000 ミリ秒です。

アプリケーション経由の "type": "disconnect" 送信後の終了処理

Sora SDK の切断タイムアウトのデフォルト値は 3000 ミリ秒です。

WebSocket のみ

data_channel_signaling: false の場合。

  • WebSocket 経由で "type": "disconnect", reason: "NO-ERROR" を送る

    • 終了処理に入る、または切断タイマーを開始し、WebSocket onclose が上がらずタイムアウトした場合は終了処理に入る

WebSocket と DataChannel

data_channel_signaling: trueignore_disconnect_websocket: false の場合。

  • "type": "switched" が送られて来ていない

    • WebSocket 経由で "type": "disconnect", reason: "NO-ERROR" を送る

    • 終了処理にはいる、または切断タイマーを開始し、WebSocket onclose が上がらずタイムアウトした場合は終了処理にはいる

  • "type": "switched", "ignore_disconnect_websocket": false が送られてきていて、 WebSocket は切断していない

    • DataChannel 経由で "type": "disconnect", reason: "NO-ERROR" を送る

    • RTCDataChannel onerror にコールバックをセットしている場合

      • 終了処理に入る、または切断タイマーを開始し、WebSocket の onclose かつ、全ての RTCDataChannelreadyState がすべて closed にならずタイムアウトした場合は終了処理にはいる

    • RTCDataChannel onerror にコールバックをセットしていない場合

      • 終了処理に入る

DataChannel のみ

data_channel_signaling: trueignore_disconnect_websocket: true の場合。

  • "type": "switched" が送られて来ていない

    • WebSocket 経由で "type": "disconnect", reason: "NO-ERROR" を送る

    • 切断タイマーを開始する

    • WebSocket onclose が上がらずタイムアウトした場合は終了処理に入る

  • "type": "switched", "ignore_disconnect_websocket": true が送られてきていて、 WebSocket も切断している

    • DataChannel 経由で "type": "disconnect", reason: "NO-ERROR" を送る

    • RTCDataChannel onerror にコールバックをセットしている場合

      • 終了処理に入る、または切断タイマーを開始し、全ての RTCDataChannelreadyState がすべて closed にならずタイムアウトした場合は終了処理にはいる

    • RTCDataChannel onerror にコールバックをセットしていない場合

      • 終了処理に入る

異常発生による終了

シグナリングの異常

終了処理に入ってください。

シグナリング以外の異常

"type": "disconnect", reason: "INTERNAL-ERROR" を送り、終了処理に入って下さい。

RTCPeerConnectionState が定義されていない場合

注釈

ブラウザでは Firefox が RTCPeerConnectionState が定義されていません

RTCDtlsTransprot が実装されていない場合 RTCPeerConnectionState が正常に動作しないため、 RTCIceConnectionState を利用してください。

RTCIceConnectionStatedisconnect になった場合、切断タイマーを開始し、 タイムアウトした場合 disconnect から変化がなければ切断してください。

Sora SDK の RTCIceConnectionState 用の切断タイマーはデフォルトで 10 秒です。

© Copyright 2021, Shiguredo Inc Created using Sphinx 4.1.1