如何使用 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。
我想避免使用包 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。