我如何知道我';m已断开与Dart websocket服务器的连接

我如何知道我';m已断开与Dart websocket服务器的连接,websocket,dart,Websocket,Dart,我创建了一个WebSocket服务器,它工作得很好,但是,我不知道如何检测客户端是否断开连接,有人能帮我吗 这是我的密码: 导入'dart:io'; 常数端口=8080; 列表用户=新列表(); void main(){ HttpServer.bind('127.0.0.1',端口) 。然后((HttpServer服务器)=> server.listen((HttpRequest请求)=> 升级(请求)。然后((WebSocket WebSocket){ //如果我的websocket已关闭,我

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

这是我的密码:

导入'dart:io';
常数端口=8080;
列表用户=新列表();
void main(){
HttpServer.bind('127.0.0.1',端口)
。然后((HttpServer服务器)=>
server.listen((HttpRequest请求)=>
升级(请求)。然后((WebSocket WebSocket){
//如果我的websocket已关闭,我可以在此处执行哪些操作来检测
添加(websocket);
add(“客户端号为${users.length}”);
})
)
);
}

由于
WebSocket
是一个
当套接字断开时,它将关闭。这是许多实现流的dart:io类的一个很好的特性——一旦你知道如何使用流,你就可以用同样的方式与它们交互

您可以通过以下几种方式检测流何时关闭:

  • onDone
    处理程序添加到
    listen()
    调用:

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

  • 通过
    asFuture()
    StreamSubscription
    转换为
    Future
    ,并等待其完成:

    var sub = websocket.listen(handler);
    sub.asFuture().then((_) => doneHandler);
    
  • 你真棒!(我打赌我不是第一个告诉你这个的人:D)谢谢你,老兄!
    var sub = websocket.listen(handler);
    sub.asFuture().then((_) => doneHandler);