init method
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);
}