我正在制作几个将由单个匿名函数处理的websockets:
handleWebSocketCreation(WebSocket socket) {
connections[++current_connections] = socket;
socket.listen((String s) => print("Client $current_connections sent: $s"), onDone: () {
print('Client $current_connections disconnected');
});
}
这显然不能按预期工作(它将继续打印 current_connections 值越大,无论套接字发送的是什么,而不是相同的实际ID)
可以像这样输出的任何解决方法?:
客户3发送:你好
客户1已发送:嗨,3!
客户端2已断开连接
等...
答案 0 :(得分:3)
您需要在变量中捕获current_connection
的值,以便稍后使用它。
handleWebSocketCreation(WebSocket socket) {
int id = ++currentConnections;
connections[id] = socket;
socket.listen((String s) {
print("Client $id sent: $s");
}, onDone: () {
print('Client $id disconnected');
});
}
答案 1 :(得分:0)
绝对不会是下一个:
socket.listen((String s){
int id = connections.indexOf(socket);
print("Client $id sent: $s");
})
然而,稍后会遇到很多复杂问题,我希望能够在.listen()
中进行赋值时使静态成为 current_connections 变量的当前值的解决方案。