Я изо всех сил пытаюсь реализовать websockets
автоподключение во флаттере.Я использую web_socket_channel , однако плагин просто оборачивает dart.io WebSocket , поэтому любое решение, основанное на классе WebSocket
, будет работать и для меня.
Iуже выяснили, как поймать разъединение сокета, см. фрагмент кода ниже:
try {
_channel = IOWebSocketChannel.connect(
wsUrl,
);
///
/// Start listening to new notifications / messages
///
_channel.stream.listen(
_onMessageFromServer,
onDone: () {
debugPrint('ws channel closed');
},
onError: (error) {
debugPrint('ws error $error');
},
);
} catch (e) {
///
/// General error handling
/// TODO handle connection failure
///
debugPrint('Connection exception $e');
}
Я думал вызвать IOWebSocketChannel.connect
изнутри onDone
, однако это приводит к некоему бесконечному циклу- поскольку мне приходится снова закрывать _channel
перед повторным вызовом connect
, он, в свою очередь, снова вызывает onDone
и т. д.
Любая помощь будет принята с благодарностью!