connect method

Future<void> connect()

Implementation

Future<void> connect() async {
  try {
    _socket = await Socket.connect(host, port);
    Console.info('✅ Connected to $host:$port');

    // Register local event
    _emitLocal('connect', null);

    utf8.decoder.bind(_socket!).transform(const LineSplitter()).listen(
          (line) {
            if (line.trim().isEmpty) return;

            try {
              final json = jsonDecode(line) as Map<String, dynamic>;
              final event = json['e'] as String?;
              final data = json['d'];

              if (event != null) {
                // Register local event
                _emitLocal(event, data);
              }
            } catch (e) {
              Console.error('Invalid message: $e');

              // Register local event
              _emitLocal('error', e);
            }
          },
          onDone: _handleDisconnect,
          onError: (error) {
            Console.error('Socket error: $error');

            // Register local even
            _emitLocal('error', error);

            _handleDisconnect();
          },
          cancelOnError: true,
        );
  } catch (e) {
    Console.error('Connection failed: $e');

    // Register local event
    _emitLocal('connect_error', e);
  }
}