connect method

Future<void> connect()

Connects to the WebSocket server.

Implementation

Future<void> connect() async {
  if (_isOpen) return;

  _channel = WebSocketChannel.connect(uri, protocols: protocols);
  await _channel!.ready;

  _messageController = StreamController<Map<String, dynamic>>.broadcast();

  _subscription = _channel!.stream.listen(
    (data) {
      try {
        final json = jsonDecode(data as String) as Map<String, dynamic>;
        _messageController!.add(json);
      } catch (e) {
        _messageController!.addError(e);
      }
    },
    onError: _messageController!.addError,
    onDone: () {
      _isOpen = false;
      _messageController?.close();
    },
  );

  _isOpen = true;
}