connect method

  1. @override
Future<void> connect()
override

Establishes the connection to the backend.

Implementation

@override
Future<void> connect() async {
  _setStatus(ChannelStatus.connecting);

  // Monitor Firebase's own connectivity indicator.
  final connectedRef = _db.ref('.info/connected');
  _connectedSub = connectedRef.onValue.listen((event) {
    final connected = event.snapshot.value as bool? ?? false;
    if (connected) {
      _setStatus(ChannelStatus.connected);
    } else if (_currentStatus != ChannelStatus.disconnecting &&
        _currentStatus != ChannelStatus.disconnected) {
      _setStatus(ChannelStatus.reconnecting);
    }
  });

  // Subscribe to new messages.
  final messagesRef = _db.ref(_path).limitToLast(_maxMessages);
  _childSub = messagesRef.onChildAdded.listen(
    _handleChildAdded,
    onError: _handleError,
  );
}