автоподключение флаттерных веб-сокетов - как реализовать - PullRequest
0 голосов
/ 03 апреля 2019

Я изо всех сил пытаюсь реализовать 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 и т. д.

Любая помощь будет принята с благодарностью!

...