Ali*_*ash 10 disconnect node.js socket.io
当有人连接到节点服务器时,我保留一个包含所有套接字的数组.这样我就可以在需要时向所有人广播消息,或者循环通过用户来计算在线用户的数量等.
所有这一切都很好,但是当一个on disconnect事件被触发时,我的参数中没有收到套接字.还有另一种方法可以知道哪个套接字刚断开连接?
var allClients = [];
io.sockets.on('connection', function(socket) {
allClients.push(socket);
socket.on('disconnect', function(socket) {
console.log('Got disconnect!');
var i = allClients.indexOf(socket);
delete allClients[i];
});
});
Run Code Online (Sandbox Code Playgroud)
当然上面的例子不起作用,因为disconnect事件不会给出socket参数(或任何其他参数).那么还有另一个事件在断开连接之前触发了套接字仍在那里吗?
阿里
Jav*_*avo 23
您已经拥有套接字,因为在'connection'事件范围内声明了disconnect handler.尝试删除传递给'disconnect'处理程序的参数,您应该能够使用连接处理程序中的socket参数.
io.sockets.on('connection', function(socket) {
allClients.push(socket);
socket.on('disconnect', function() {
console.log('Got disconnect!');
var i = allClients.indexOf(socket);
delete allClients[i];
});
});
Run Code Online (Sandbox Code Playgroud)
除此之外,您不需要广播套接字阵列,您可以使用房间对套接字进行分组并广播到该房间内的所有套接字.
| 归档时间: |
|
| 查看次数: |
15024 次 |
| 最近记录: |