connect method
Connect to WebSocket server
Implementation
Future<void> connect() async {
if (_state == WebSocketState.connected ||
_state == WebSocketState.connecting) {
return;
}
_updateState(WebSocketState.connecting);
_logger.info('WebSocket connecting to: $url');
try {
// Build WebSocket URL with auth token if provided
final wsUrl = authToken != null ? '$url?token=$authToken' : url;
_channel = WebSocketChannel.connect(Uri.parse(wsUrl));
// Listen to messages
_channel!.stream.listen(
_onMessage,
onError: _onError,
onDone: _onDone,
cancelOnError: false,
);
_updateState(WebSocketState.connected);
_reconnectAttempts = 0;
_logger.info('WebSocket connected');
// Start ping timer to keep connection alive
_startPingTimer();
} catch (e, stackTrace) {
_logger.error('WebSocket connection error', e, stackTrace);
_updateState(WebSocketState.error);
_scheduleReconnect();
}
}