connect method

void connect()

Connect to the WebSocket server

Implementation

void connect() async {
  try {
    GlobalLogger().i('TxSocket :: connect : $hostAddress');

    _socket = await WebSocket.connect(hostAddress);
    _socket
      ..pingInterval = const Duration(seconds: 10)
      ..timeout(const Duration(seconds: 30));

    // Initialize connection tracking
    _cleanPingIntervals();
    _connectionStartTime = DateTime.now().millisecondsSinceEpoch;

    onOpen.call();

    // Emit initial calculating state
    final initialMetrics = _calculateConnectionMetrics();
    onPing?.call(initialMetrics);
    _socket.listen(
      (dynamic data) {
        // Check if this is a ping/pong message
        if (_isPingMessage(data)) {
          _handlePingReceived();
        }
        onMessage.call(data);
      },
      onDone: () {
        _cleanPingIntervals();
        onClose.call(
          _socket.closeCode ?? 0,
          _socket.closeReason ?? 'Closed for unknown reason',
        );
      },
    );
  } catch (e) {
    _cleanPingIntervals();
    onClose.call(500, e.toString());
  }
}