init method

  1. @override
Future<void> init()

Implementation

@override
Future<void> init() async {
  if (isOpen) {
    return;
  }
  var address = this.address;
  final scheme = address.scheme;
  if (scheme.startsWith(kSwampSchemePrefix)) {
    address = address.replace(
      scheme: scheme.substring(kSwampSchemePrefix.length),
    );
  }
  if (!address.hasScheme) {
    address = address.replace(scheme: 'wss');
  }
  final channel = _channel = WebSocketChannel.connect(
    address,
    protocols: ['swamp-0'],
  );
  channel.stream.listen(
    (event) {
      if (event is String) {
        event = Uint8List.fromList(event.codeUnits);
      }
      onMessage(event);
    },
    onDone: () {
      _onClosed.add(null);
    },
    onError: (error) {
      _onClosed.addError(error);
    },
    cancelOnError: true,
  );
  await channel.ready;
  _onOpen.add(null);
}