如何使用 dart:io Flutter 处理 websocket

How to handle websocket with dart:io Flutter

我想避免使用包 web_socket_channel,尽管它的投票似乎没有得到积极维护(许多 github 问题未得到解答)并且不处理错误。

我只需要从 Flutter 连接到我在 AWS 中的 WebSocket API。

我如何使用 dart:io 包做到这一点?或者 socket_io_client 有可能吗?我看到连接是 http 而不是 wss.

除了通常的 try - catch 之外,我还找到了一种方法来使用 web_socket_channel 包处理 channel.sink.listen StreamSubscription 对象中的错误。

你可以根据这个answer做如下操作:

 _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');
        },
      );

这确实有效,当然在我的用例中不需要使用 SocketIO。