シーケンス図

注意

シーケンス図は実験的提供となります。内容も今後増やして行く予定です。

WebSocket 経由シグナリング

認証ウェブフックなし

blockdiag クライアント Sora アプリサーバー "type": "connect" "type": "offer" "type": "answer" "type": "candidate" イベントウェブフック "type": "connection.created" 200 OK WebRTC 確立

認証ウェブフックあり

blockdiag クライアント Sora アプリサーバー "type": "connect" 認証ウェブフック 200 OK {"allowed": true} "type": "offer" "type": "answer" "type": "candidate" イベントウェブフック "type": "connection.created" 200 OK WebRTC 確立

DataChannel 経由シグナリング

認証ウェブフックなし

blockdiag クライアント Sora アプリサーバー "type": "connect" "type": "offer" "type": "answer" "type": "candidate" イベントウェブフック "type": "connection.created" 200 OK "type": "switched" WebRTC 確立 DataChannel 確立 これ以降は DataChannel が利用される

DataChannel 経由のメッセージ

blockdiag クライアント Sora label: signaling label: signaling label: notify label: push label: stats label: stats "type": "switched" "type": "re-offer" "type": "re-answer" "type": "notify" "type": "push" "type": "req-stats" "type": "stats" WebRTC 確立 DataChannel 確立 これ以降は DataChannel が利用される

シグナリング通知

blockdiag クライアント Sora アプリサーバー "type": "offer" "type": "answer" イベントウェブフック "type": "connection.created" 200 OK シグナリング通知 "type": "connection.craeted" イベントウェブフック "type": "connection.updated" 200 OK シグナリング通知 "type": "connection.updated" 認証成功 WebRTC 確立 接続から 1 分経過

認証ウェブフック

認証成功

blockdiag クライアント Sora アプリサーバー "type": "connect" 認証ウェブフック 200 OK {"allowed": true} "type": "offer" "type": "answer" WebRTC 確立

認証拒否

blockdiag クライアント Sora アプリサーバー "type": "connect" 認証ウェブフック {"allowed": false, "reason": "reject"} WebSocket Close

イベントウェブフック

connection.*

blockdiag クライアント Sora アプリサーバー "type": "offer" "type": "answer" イベントウェブフック "type": "connection.created" 200 OK イベントウェブフック "type": "connection.updated" 200 OK "type": "disconnect" イベントウェブフック "type": "connection.destroyed " 200 OK WebSocket Close 認証成功 WebRTC 確立 接続から 1 分経過

event_metadata

blockdiag クライアント Sora アプリサーバー "type": "connect" 認証ウェブフック 200 OK "allowed": true, "event_metadata": {"pk": 1} "type": "offer" "type": "answer" イベントウェブフック "type": "connection.created", "event_metadata": {"pk": 1} 200 OK イベントウェブフック "type": "connection.updated", "event_metadata": {"pk": 1} 200 OK "type": "disconnect" イベントウェブフック "type": "connection.destroyed ", "event_metadata": {"pk": 1} 200 OK WebSocket Close WebRTC 確立 接続から 1 分経過

マルチストリーム

blockdiag クライアント1 Sora クライアント2 "type": "offer" "type": "answer" シグナリング通知 クライアント1 "type": "connection.craeted" "type": "offer" "type": "answer" シグナリング通知 クライアント2 "type": "connection.craeted" "type": "re-offer" "type": "re-answer" シグナリング通知 クライアント2 "type": "connection.craeted" "type": "disconnect" WebSocket Close シグナリング通知 クライアント2 "type": "connection.destroyed " クライアント1 認証成功 クライアント1 WebRTC 確立 クライアント2 認証成功 クライアント2 WebRTC 確立

サイマルキャスト

blockdiag クライアント1 Sora クライアント2 {"type": "connect", "role": "sendonly", "simulcast": true} {"type": "connect", "role": "recvonly", "simulcast_rid": "r1"} 映像 rid: r0 映像 rid: r1 映像 rid: r1 映像 rid: r2 クライアント1 WebRTC 確立 クライアント2 WebRTC 確立

スポットライト

blockdiag クライアント1 Sora クライアント2 r0 の代わりに r1 映像を配信 {"type": "connect", "role": "sendonly", "simulcast": true} 映像 rid: r0 映像 rid: r1 {"type": "connect", "role": "recvonly", "simulcast_rid": "r1"} 映像 rid: r0 映像 rid: r1 クライアント1映像 rid: r0 クライアント2映像 rid: r0 クライアント1音声 クライアント1映像 rid: r1 クライアント1 WebRTC 確立 クライアント2 WebRTC 確立 クライアント1 が喋り始める しゃべり初めて 2 秒経過

録画

StopRecording API

blockdiag クライアント Sora アプリサーバー "type": "offer" "type": "answer" HTTP API StartRecording 200 OK HTTP API StopRecording 200 OK イベントウェブフック "type": "archive.available" 200 OK イベントウェブフック "type": "recording.report" 200 OK 認証成功 WebRTC 確立 録画中 録画終了

録画期限切れ

blockdiag クライアント Sora アプリサーバー "type": "offer" "type": "answer" HTTP API StartRecording 200 OK イベントウェブフック "type": "archive.available" 200 OK イベントウェブフック "type": "recording.report" 200 OK 認証成功 WebRTC 確立 録画中 期限切れにより録画終了

クライアント切断

blockdiag クライアント Sora アプリサーバー "type": "offer" "type": "answer" HTTP API StartRecording 200 OK "type": "disconnect" イベントウェブフック "type": "connection.destroyed " 200 OK WebSocket Close イベントウェブフック "type": "archive.available" 200 OK 認証成功 WebRTC 確立 録画中 クライアント切断により録画終了
© Copyright 2021, Shiguredo Inc Created using Sphinx 4.1.1