close method

Future<void> close()
override

Closes the connection.

Implementation

Future<void> close() async {
  if (_closing) return;
  _closing = true;

  try {
    final streamIds = List<int>.from(_registeredStreams.keys);
    for (final streamId in streamIds) {
      final stream = _registeredStreams[streamId];
      if (stream != null) {
        await stream.close();
      }
    }
    _registeredStreams.clear();

    multiplexer.removeSocket(cids.localCid);

    emit('close');
  } catch (e) {
    emit('error', e);
    rethrow;
  } finally {
    super.close();
  }
}