Javascript 移除disconnect socket.io上的对象
我正在使用Nodejs和Socket.io。当客户端连接时,将创建新的JavaScript对象 这些物体会永远停留吗?当客户端断开连接时,是否应删除或删除它们?甚至可以移除一个对象吗?我知道删除不起作用 谢谢-我想这是一个更一般的问题,任何建议都会非常有用Javascript 移除disconnect socket.io上的对象,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在使用Nodejs和Socket.io。当客户端连接时,将创建新的JavaScript对象 这些物体会永远停留吗?当客户端断开连接时,是否应删除或删除它们?甚至可以移除一个对象吗?我知道删除不起作用 谢谢-我想这是一个更一般的问题,任何建议都会非常有用 谢谢 如果你不清理,那么是的,它们将永远留在那里,因为我认为你正在使它们全球化 一旦用户断开连接,您应该通过绑定到断开连接事件侦听器进行清理: var clients = {} sockets.on('connection', functio
谢谢 如果你不清理,那么是的,它们将永远留在那里,因为我认为你正在使它们全球化 一旦用户断开连接,您应该通过绑定到
断开连接
事件侦听器进行清理:
var clients = {}
sockets.on('connection', function(socket) {
clients[socket.id] = socket;
socket.on('disconnect', function() {
delete clients[socket.id];
});
});
太好了,谢谢!我假设我可以对“客户机”使用相同的方法来跟踪其他对象?在创建的“套接字”功能之外还有其他几个对象。jup!有些人会在“socket”变量中添加对象,然后自动销毁它
socket.data=“foo”
然后客户端就有了该套接字的id。我不知道为什么,但是删除客户端[socket.id]代码>有时就是不起作用。根据我的研究,这似乎是一个socket.io问题…@christian yup我也有这个问题…grrrrrr…我最后使用了“卸载时同步断开”:在io.connect(客户端)中是真的,但不知怎的,它起了作用删除在严格模式下是不允许的有其他方法来实现这一点吗?你能补充一些解决方案的细节吗?只有代码的答案没有多大帮助。
socket.on('disconnect', disc => {
console.log("disconnect");
console.log(socket.id);
console.log(rects);
console.log(rects.indexOf(id));
let index = rects.indexOf(id);
rects.splice(index, 1);
socket.broadcast.emit("discon", id);
});