dispose method

void dispose()

Dispose of the socket.

Don't forget to call this at the end of the lifetime of a socket.

Implementation

void dispose() {
  _shouldReconnect = false;
  if (_disposed) return;

  _disposed = true;
  _ws?.sink.close();

  for (final sub in _subscriptions) {
    sub.cancel();
  }
  _subscriptions.clear();

  _pendingMessages.clear();

  final disposedChannels = channels.values.toList();
  channels.clear();

  for (final channel in disposedChannels) {
    channel.leavePush?.trigger(PushResponse(status: 'ok'));
    channel.close();
  }

  _topicMessages.close();
  _topicStreams.clear();

  _stateStreamController.close();
  _receiveStreamController.close();
}