connect method

void connect()

Connect to the WebSocket server

Implementation

void connect() async {
  try {
    _socket = WebSocket(hostAddress);

    _socket.onOpen.listen((e) {
      // Initialize connection tracking
      _cleanPingIntervals();
      _connectionStartTime = DateTime.now().millisecondsSinceEpoch;
      onOpen.call();

      // Emit initial calculating state
      final initialMetrics = _calculateConnectionMetrics();
      onPing?.call(initialMetrics);
    });

    _socket.onMessage.listen((e) {
      // Check if this is a ping/pong message
      if (_isPingMessage(e.data)) {
        _handlePingReceived();
      }
      onMessage.call(e.data);
    });

    _socket.onClose.listen((e) {
      _cleanPingIntervals();
      onClose.call(e.code ?? 0, e.reason ?? 'Closed for unknown reason');
    });
  } catch (e) {
    _cleanPingIntervals();
    onClose.call(500, e.toString());
  }
}