connect method

void connect()

Implementation

void connect() {
  try {
    _channel = WebSocketChannel.connect(Uri.parse(url));

    // Send auth data on connection
    _channel!.sink.add(jsonEncode(authData));

    // Reset reconnect delay on successful connection
    _reconnectDelay = 1000;

    // Start ping/pong interval (every 30 seconds)
    _pingTimer?.cancel();
    _pingTimer = Timer.periodic(const Duration(seconds: 30), (timer) {
      if (_channel != null) {
        send({'type': 'ping'});
      }
    });

    // Listen to incoming messages
    _channel!.stream.listen(
      (message) {
        if (_onMessage != null) {
          _onMessage!(MessageEvent(data: message));
        }
      },
      onError: (error) {
        _handleDisconnect();
      },
      onDone: () {
        _handleDisconnect();
      },
    );
  } catch (e) {
    _handleDisconnect();
  }
}