diff --git a/lib/src/core/engine.dart b/lib/src/core/engine.dart index 0720685..c4c4862 100644 --- a/lib/src/core/engine.dart +++ b/lib/src/core/engine.dart @@ -71,6 +71,7 @@ class Engine extends Disposable with EventsEmittable { FastConnectOptions? fastConnectOptions; bool _subscriberPrimary = false; + String? _participantSid; // server-provided ice servers List _serverProvidedIceServers = []; @@ -284,6 +285,7 @@ class Engine extends Disposable with EventsEmittable { connectOptions: connectOptions, roomOptions: roomOptions, reconnect: true, + sid: _participantSid, ); if (publisher == null || subscriber == null) { @@ -593,6 +595,7 @@ class Engine extends Disposable with EventsEmittable { // create peer connections _subscriberPrimary = event.response.subscriberPrimary; _serverProvidedIceServers = event.response.iceServers; + _participantSid = event.response.participant.sid; logger.fine('onConnected subscriberPrimary: ${_subscriberPrimary}, ' 'serverVersion: ${event.response.serverVersion}, ' diff --git a/lib/src/core/signal_client.dart b/lib/src/core/signal_client.dart index 184e6fe..a91f86e 100644 --- a/lib/src/core/signal_client.dart +++ b/lib/src/core/signal_client.dart @@ -54,6 +54,7 @@ class SignalClient extends Disposable with EventsEmittable { required ConnectOptions connectOptions, required RoomOptions roomOptions, bool reconnect = false, + String? sid, }) async { final rtcUri = await Utils.buildUri( uriString, @@ -61,6 +62,7 @@ class SignalClient extends Disposable with EventsEmittable { connectOptions: connectOptions, roomOptions: roomOptions, reconnect: reconnect, + sid: sid, ); logger.fine('SignalClient connecting with url: $rtcUri'); diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 3cfb457..4151d64 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -146,6 +146,7 @@ class Utils { bool reconnect = false, bool validate = false, bool forceSecure = false, + String? sid, }) async { final Uri uri = Uri.parse(uriString); @@ -171,6 +172,7 @@ class Utils { 'auto_subscribe': connectOptions.autoSubscribe ? '1' : '0', 'adaptive_stream': roomOptions.adaptiveStream ? '1' : '0', if (reconnect) 'reconnect': '1', + if (reconnect && sid != null) 'sid': sid, 'protocol': connectOptions.protocolVersion.toStringValue(), 'sdk': 'flutter', 'version': LiveKitClient.version,