connect method

Future<void> connect()

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();
  }
}