Sora クライアント要求仕様¶
概要¶
Sora SDK や Sora クライアントの開発者に向けた資料です。
クライアント側の終了処理条件¶
RTCPeerConnectionState が failed になる¶
全ての接続において RTCPeerConnectionState が failed になったタイミングで "type": "disconnect" は送らず、
クライアント側で終了処理をしてください。
WebSocket のみ¶
- RTCPeerConnectionState が failed になった
- 終了処理に入る
- WebSocket onclose が上がった
- 終了処理に入る
- WebSocket onerror が上がった
- 終了処理に入る
WebSocket と DataChannel¶
- RTCPeerConnectionState が failed になった
- 終了処理に入る
- WebSocket onclose が上がった
"type": "switched"が送られてきていない- 終了処理に入る
"type": "switched", "ignore_disconnect_websocket": trueが送られてきていた- 何もしない
"type": "switched", "ignore_disconnect_websocket": falseが送られてきていて、 RTCPeerConnectionState が failed になっている- 終了処理に入る
"type": "switched", "ignore_disconnect_websocket": falseが送られてきていて、 RTCPeerConnectionState が failed になっていない- DataChanel で
"type": "disconnect", reason: "WEBSOCKET-ONCLOSE"を送ることを試みる - 終了処理に入る
- DataChanel で
- WebSocket onerror が上がった
"type": "switched"が送られてきていない- 終了処理に入る
"type": "switched", "ignore_disconnect_websocket": trueが送られてきていた- 何もしない
"type": "switched", "ignore_disconnect_websocket": falseが送られてきていて、 RTCPeerConnectionState が failed になっている- 終了処理に入る
"type": "switched", "ignore_disconnect_websocket": falseが送られてきていて、 RTCPeerConnectionState が failed になっていない- DataChanel で
"type": "disconnect", reason: "WEBSOCKET-ONERROR"を送ることを試みる - 終了処理に入る
- DataChanel で
DataChannel のみ¶
- RTCPeerConnectionState が failed になった
- 終了処理に入る
DataChannel の終了¶
Sora SDK の切断タイムアウトのデフォルト値は 3000 ミリ秒です。
- RTCDataChannel onclose が上がった
- RTCDataChannel onerror にコールバックをセットしている場合
- 終了処理に入る、または切断タイマーを開始し、全ての RTCDataChannel の readyState がすべて closed にならずタイムアウトした場合は終了処理にはいる
- RTCDataChannel onerror にコールバックをセットしていない場合
- 終了処理に入る
- RTCDataChannel onerror にコールバックをセットしている場合
- RTCDataChannel onerror が上がった
- 終了処理に入る
アプリケーション経由の "type": "disconnect" 送信後の終了処理¶
Sora SDK の切断タイムアウトのデフォルト値は 3000 ミリ秒です。
WebSocket のみ¶
data_channel_signaling: false の場合。
- WebSocket 経由で
"type": "disconnect", reason: "NO-ERROR"を送る- 終了処理に入る、または切断タイマーを開始し、WebSocket onclose が上がらずタイムアウトした場合は終了処理に入る
WebSocket と DataChannel¶
data_channel_signaling: true で ignore_disconnect_websocket: false の場合。
"type": "switched"が送られて来ていない- WebSocket 経由で
"type": "disconnect", reason: "NO-ERROR"を送る - 終了処理にはいる、または切断タイマーを開始し、WebSocket onclose が上がらずタイムアウトした場合は終了処理にはいる
- WebSocket 経由で
"type": "switched", "ignore_disconnect_websocket": falseが送られてきていて、 WebSocket は切断していない- DataChannel 経由で
"type": "disconnect", reason: "NO-ERROR"を送る - RTCDataChannel onerror にコールバックをセットしている場合
- 終了処理に入る、または切断タイマーを開始し、WebSocket の onclose かつ、全ての RTCDataChannel の readyState がすべて closed にならずタイムアウトした場合は終了処理にはいる
- RTCDataChannel onerror にコールバックをセットしていない場合
- 終了処理に入る
- DataChannel 経由で
DataChannel のみ¶
data_channel_signaling: true で ignore_disconnect_websocket: true の場合。
"type": "switched"が送られて来ていない- WebSocket 経由で
"type": "disconnect", reason: "NO-ERROR"を送る - 切断タイマーを開始する
- WebSocket onclose が上がらずタイムアウトした場合は終了処理に入る
- WebSocket 経由で
"type": "switched", "ignore_disconnect_websocket": trueが送られてきていて、 WebSocket も切断している- DataChannel 経由で
"type": "disconnect", reason: "NO-ERROR"を送る - RTCDataChannel onerror にコールバックをセットしている場合
- 終了処理に入る、または切断タイマーを開始し、全ての RTCDataChannel の readyState がすべて closed にならずタイムアウトした場合は終了処理にはいる
- RTCDataChannel onerror にコールバックをセットしていない場合
- 終了処理に入る
- DataChannel 経由で
異常発生による終了¶
シグナリングの異常¶
終了処理に入ってください。
シグナリング以外の異常¶
"type": "disconnect", reason: "INTERNAL-ERROR" を送り、終了処理に入って下さい。
RTCPeerConnectionState が定義されていない場合¶
RTCDtlsTransprot が実装されていない場合 RTCPeerConnectionState が正常に動作しないため、 RTCIceConnectionState を利用してください。
RTCIceConnectionState が disconnect になった場合、切断タイマーを開始し、 タイムアウトした場合 disconnect から変化がなければ切断してください。
Sora SDK の RTCIceConnectionState 用の切断タイマーはデフォルトで 10 秒です。