signalJoin method
- String url
Performs a signal-level join (WebSocket only, no peer connections) and returns the server's join response.
Implementation
@protected
Future<lk_rtc.JoinResponse> signalJoin(String url) async {
final signalClient = SignalClient(wsConnector ?? LiveKitWebSocket.connect);
final listener = signalClient.createListener();
try {
final joinCompleter = Completer<lk_rtc.JoinResponse>();
listener.once<SignalJoinResponseEvent>((event) {
if (!joinCompleter.isCompleted) {
joinCompleter.complete(event.response);
}
});
await signalClient.connect(
url,
token,
connectOptions: connectOptions ?? const ConnectOptions(),
roomOptions: options.roomOptions ?? const RoomOptions(),
);
return await joinCompleter.future.timeout(
(connectOptions ?? const ConnectOptions()).timeouts.connection,
onTimeout: () => throw const CheckException('Did not receive a join response'),
);
} finally {
await listener.dispose();
await signalClient.dispose();
}
}