signalJoin method

  1. @protected
Future<JoinResponse> signalJoin(
  1. 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();
  }
}