【发布时间】:2012-04-12 16:14:03
【问题描述】:
我正在使用 Nodejs 和 Socket.io。当客户端连接时,会创建新的 JavaScript 对象。
这些对象会永远存在吗?当客户端断开连接时,它们应该被删除还是删除?甚至可以删除对象吗?我知道删除不起作用...
谢谢 - 我想这是一个比较笼统的问题,任何建议都会很有帮助。
谢谢!
【问题讨论】:
标签: javascript node.js socket.io
我正在使用 Nodejs 和 Socket.io。当客户端连接时,会创建新的 JavaScript 对象。
这些对象会永远存在吗?当客户端断开连接时,它们应该被删除还是删除?甚至可以删除对象吗?我知道删除不起作用...
谢谢 - 我想这是一个比较笼统的问题,任何建议都会很有帮助。
谢谢!
【问题讨论】:
标签: javascript node.js socket.io
如果您不清理,那么是的,它们将永远留在那里,因为我认为您正在使它们全球化。
一旦用户断开连接,您应该通过绑定到disconnect 事件侦听器进行清理:
var clients = {}
sockets.on('connection', function(socket) {
clients[socket.id] = socket;
socket.on('disconnect', function() {
delete clients[socket.id];
});
});
【讨论】:
socket.data = "foo" 然后客户端只有该套接字的 id。
delete clients[socket.id]; 有时只是不起作用。根据我的研究,这似乎是一个 socket.io 问题......
delete is not allowed in strict mode 有没有其他方法可以实现这一点?
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);
});
【讨论】: