Flutter websocket 断开监听

Nic*_*ela 5 websocket dart flutter

在 Flutter 中,我想监听 websocket 断开连接事件,如何实现? 当应用程序进入后台时websocket 连接将被删除,我仍然没有找到让它在后台继续运行的方法(有没有人有解决方案?),所以我必须检测 websocket 连接是否丢失或什么的,以便我失去连接时可以重新连接。如果有人知道如何实现这一点,请帮忙。

Ang*_*rov 12

您可以通过实现onDone回调来确定 websocket 是否关闭。请参阅下面的示例:

      _channel = IOWebSocketChannel.connect(
        'ws://yourserver.com:port',
      );

      ///
      /// Start listening to new notifications / messages
      ///
      _channel.stream.listen(
        (dynamic message) {
          debugPrint('message $message');
        },
        onDone: () {
          debugPrint('ws channel closed');
        },
        onError: (error) {
          debugPrint('ws error $error');
        },
      );

Run Code Online (Sandbox Code Playgroud)

希望有帮助。


Dan*_*eny 1

关于 SO 和网络的其他答案表明,您不能只在后台保持套接字打开(这似乎合理,您会保持打开的网络连接,这可能会影响电池寿命)。根据您的用例,您可能最好查看推送通知或按计划检查的内容。

  • 您好,感谢您的帮助。那么你知道如何在 Flutter 上检测 websocket 是否运行吗? (2认同)