DataChannel 経由のシグナリング¶
概要¶
Sora Flutter SDK における Sora の DataChannel をどのようにシグナリングや通知に利用するかを説明します。
DataChannel 経由のシグナリングとは¶
Sora Flutter SDK は、WebSocket シグナリングに加えて DataChannel 経由のシグナリングを扱えます。
接続の開始時点では WebSocket を使い、その後の状態によって DataChannel ベースのシグナリングへ切り替わる構成を扱います。
Sora は DataChannel をシグナリングだけでなく、通知やプッシュ、統計、RPC 機能にも使います。
流れとしては次のように理解すると分かりやすくなります。
- 接続開始時は WebSocket 経由でシグナリングする
data_channel_signaling: trueを指定している場合、Sora 側の条件が揃うとswitchedメッセージが届く- 以後のシグナリングや通知の一部は DataChannel ベースで扱われる
ignore_disconnect_websocketが有効な構成では、切り替え後に WebSocket を閉じる
DataChannel 経由のシグナリングに関する設定¶
SoraConnectionConfig では、主に次の項目を使います。
- dataChannelSignaling
- ignoreDisconnectWebSocket
dataChannelSignaling¶
WebSocket の後段で DataChannel 経由のシグナリングを使いたい場合に指定します。
これは「DataChannel への切り替えを使いたい」という接続時の要求です。 true を指定しても、常に切り替わると決まっているわけではありません。実際に切り替わったかどうかは SoraSwitchedEvent で確認します。
final config = SoraConnectionConfig(
signalingUrls: <String>['wss://example.com/signaling'],
channelId: 'example-channel',
role: SoraRole.sendrecv,
video: true,
audio: true,
dataChannelSignaling: true,
);
ignoreDisconnectWebSocket¶
DataChannel 経由のシグナリングへ切り替わった後、WebSocket 切断を無視する構成にしたい場合に指定します。
この値は connect メッセージの ignore_disconnect_websocket として Sora に渡されます。SDK 側では、 switched メッセージに ignore_disconnect_websocket: true が含まれていた場合に、WebSocket を閉じます。
final config = SoraConnectionConfig(
signalingUrls: <String>['wss://example.com/signaling'],
channelId: 'example-channel',
role: SoraRole.sendrecv,
dataChannelSignaling: true,
ignoreDisconnectWebSocket: true,
);
シグナリング切り替え¶
DataChannel 経由のシグナリングに切り替わると client.events の SoraSwitchedEvent が発火します。
client.events.listen((event) {
if (event case SoraSwitchedEvent(:final message)) {
print(message);
}
});
message には、たとえば ignore_disconnect_websocket のような switched メッセージの内容がそのまま入ります。