flutter如何监听web_socket_channel的握手成功回调
在Flutter中使用web_socket_channel建立WebSocket连接时,如何监听握手成功的回调?目前通过WebSocketChannel.connect可以建立连接,但没有找到明确的手成功回调方法。试过监听stream的onDone和onError,但这些似乎只在连接关闭或出错时触发。请问有没有官方推荐的方式或者实际可行的方案来捕获握手成功事件?
2 回复
在web_socket_channel中,监听握手成功可使用WebSocketChannel.connect返回的channel,通过channel.stream监听连接状态。握手成功后,会收到WebSocketChannel.readyState为WebSocket.open的事件。
更多关于flutter如何监听web_socket_channel的握手成功回调的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,使用 web_socket_channel 包时,可以通过监听 WebSocketChannel 的 ready 属性来检测握手成功。ready 是一个 Future,在连接建立并握手成功后完成。
示例代码:
import 'package:web_socket_channel/web_socket_channel.dart';
void connectWebSocket() {
final channel = WebSocketChannel.connect(
Uri.parse('wss://your-websocket-url'),
);
// 监听握手成功
channel.ready.then((_) {
print('WebSocket 握手成功,连接已建立');
// 握手成功后的操作,例如发送初始消息
channel.sink.add('Hello Server!');
});
// 监听接收消息
channel.stream.listen(
(message) {
print('收到消息: $message');
},
onError: (error) {
print('发生错误: $error');
},
onDone: () {
print('连接关闭');
},
);
}
说明:
channel.ready返回的Future在握手完成时解析,可执行连接成功后的逻辑。- 使用
channel.sink.add()发送消息。 - 通过
channel.stream.listen监听服务器发送的消息及连接状态变化。
确保在 pubspec.yaml 中添加依赖:
dependencies:
web_socket_channel: ^2.4.0
这种方式简单直接,适用于大多数 WebSocket 握手成功监听场景。

