connect method
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),
);
}