Не удается получить логику повторных попыток для WebSocketChannel

#flutter #dart #websocket #flutter-web

Вопрос:

Я использую a WebSocketChannel для своего веб-проекта flutter, и мне трудно реализовать логику повторных попыток. У меня есть следующее, но со второй попытки я всегда получаю эту ошибку

 WebSocketChannelException (WebSocketChannelException: WebSocket connection failed.)
_jsError:NativeJavaScriptObject (Error: WebSocketChannelException: WebSocket connection failed.
    
)
inner:null
message:"WebSocket connection failed."
 
   Future<void> runWebSocket({int retryCount = 0}) async {
    var channel;

    try {
      final wsUrl = baseUrl.replaceAll("http:", "ws:");
      channel = WebSocketChannel.connect(
        Uri.parse("$wsUrl/ws"),
      );

      ref.onDispose(() {
        if (channel != null) {
          channel.sink.close();
        }
      });

      var message = jsonEncode(<String, String>{
        'key': 'stuff to send',
      });

      channel.sink.add(message);

      await for (final value in channel.stream) {
        final data = jsonDecode(value);
        state = AsyncData(data);
      }
    } catch (e) {
      state = AsyncError(e);
    } finally {
      if (channel != null amp;amp; channel.closeCode == 1006) {
        await sleep();
        await runWebSocket(retryCount: retryCount   1);
      } else if (channel != null) {
        channel.sink.close();
      }
    }
  }
}
 

Если кто-нибудь внедрил повторные WebSocketChannel попытки и может помочь, буду признателен.