#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
попытки и может помочь, буду признателен.