connect method
Connect to a WebSocket endpoint.
Implementation
@override
Future<void> connect(
String url, {
Map<String, dynamic>? headers,
Map<String, dynamic>? options,
}) async {
if (_socket != null) {
return;
}
final socketOptions = <String, dynamic>{
'transports': ['websocket'],
'autoConnect': true,
};
if (options != null) {
socketOptions.addAll(options);
}
if (headers != null && headers.isNotEmpty) {
socketOptions['extraHeaders'] = headers;
}
final socket = io.io(url, socketOptions);
_socket = socket;
final completer = Completer<void>();
socket.onConnect((_) {
if (!completer.isCompleted) {
completer.complete();
}
});
socket.onConnectError((error) {
if (!completer.isCompleted) {
completer.completeError(
DSWebSocketError(
'Socket.IO connection failed.',
originalError: error,
),
);
}
});
socket.onError((error) {
if (!completer.isCompleted) {
completer.completeError(
DSWebSocketError(
'Socket.IO connection error.',
originalError: error,
),
);
}
});
return completer.future;
}