gpt4 book ai didi

websocket - 我怎么知道我是否与 Dart websocket 服务器断开连接

转载 作者:行者123 更新时间:2023-12-03 03:19:06 30 4
gpt4 key购买 nike

我创建了一个 WebSocket 服务器,它工作得很好,但是,我不知道如何检测客户端是否断开连接,有人能帮我吗?

这是我的代码:

import 'dart:io';
const port=8080;
List users=new List();

void main() {

HttpServer.bind('127.0.0.1', port)
.then((HttpServer server)=>
server.listen((HttpRequest request) =>

WebSocketTransformer.upgrade(request).then((WebSocket websocket) {
//what can i do here to detect if my websocket is closed
users.add(websocket);
websocket.add("clients Number is ${users.length}");
})
)
);
}

最佳答案

因为 WebSocket 是一个 Stream 它会在套接字断开连接时关闭。这是许多实现 Stream 的 dart:io 类的一个很好的属性——一旦您知道如何使用 Streams,您就可以以相同的方式与它们交互。

您可以通过多种方式检测 Stream 何时关闭:

  1. onDone 处理程序添加到您的 listen() 调用中:

    websocket.listen(handler, onDone: doneHandler);
  2. listen() 返回的 StreamSubscription 添加一个 on-done 处理程序:

    var sub = websocket.listen(handler);
    sub.onDone(doneHandler);
  3. 通过 asFuture()StreamSubscription 转换为 Future 并等待它完成:

    var sub = websocket.listen(handler);
    sub.asFuture().then((_) => doneHandler);

关于websocket - 我怎么知道我是否与 Dart websocket 服务器断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21769918/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com