reconnect method

Future<void> reconnect()

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