reconnect method
Implementation
Future<void> reconnect() async {
try {
if (url != null) {
log('connect $url');
_channel = WebSocketChannel.connect(Uri.tryParse(url!)!);
await _channel!.ready;
_subscription = _channel!.stream.listen(
(v) {
if (verifiedReceivedMessage != null &&
v.toString() != verifiedReceivedMessage) {
sendMessage(verifiedReceivedMessage!);
callback.call(v.toString());
} else if (verifiedReceivedMessage == null) {
callback.call(v.toString());
}
},
onDone: () {
log('done');
dispose(false);
if (autoConnect) {
log('reconnect web socket');
reconnect();
}
},
onError: (e, s) {
log('connect $url error: $e', stackTrace: s);
dispose(false);
},
cancelOnError: true,
);
_timer ??= Timer.periodic(
const Duration(seconds: 10),
(_) async => await _channel?.ready,
);
isConnect = true;
}
} catch (e, s) {
log('connect error: $e', stackTrace: s);
dispose(false);
}
}