我如何知道我';m已断开与Dart websocket服务器的连接
我创建了一个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已关闭,我
导入'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);
var sub = websocket.listen(handler);
sub.asFuture().then((_) => doneHandler);