connect method

Future<void> connect([
  1. String? id
])

Implementation

Future<void> connect([String? id]) async {
  _id = id;
  final protocol = secure ? 'wss' : 'ws';
  final randomToken = _generateToken();

  final portPart = (secure && port == 443) || (!secure && port == 80)
      ? ''
      : ':$port';
  final normalizedPath = path.endsWith('/') ? path : '$path/';

  final url = Uri.parse(
    '$protocol://$host$portPart${normalizedPath}peerjs?key=$key&id=${id ?? ""}&token=$randomToken',
  );

  print('Signaling connecting to: $url');
  try {
    _channel = WebSocketChannel.connect(url);
    _connected = true;
  } catch (e) {
    _connected = false;
    emit('error', this, 'Could not connect to signaling server: $e');
    return;
  }

  _subscription = _channel!.stream.listen(
    (data) {
      try {
        final Map<String, dynamic> json = jsonDecode(data);
        final message = SignalingMessage.fromJson(json);
        _handleMessage(message);
      } catch (e) {
        print('Error parsing signaling message: $e');
      }
    },
    onDone: () => _handleDisconnect(),
    onError: (err) => _handleError(err),
  );
}