删除断开连接socket.io上的对象

我正在使用Nodejs和Socket.io。 当客户端连接时,将创build新的JavaScript对象。

这些东西是否永远持续下去? 当客户端断开连接时应该删除还是删除它们? 是否有可能删除一个对象? 我知道删除将无法正常工作…

谢谢 – 我想这是一个更普遍的问题,任何build议都会非常有帮助。

谢谢!

如果你不清理,那么是的,他们会永远呆在那里,因为我假设你正在把它们变成全球的。

一旦用户通过绑定到disconnect事件侦听器断开连接,您应该清除:

 var clients = {} sockets.on('connection', function(socket) { clients[socket.id] = socket; socket.on('disconnect', function() { delete clients[socket.id]; }); }); 

我认为接受的答案并不是真正解决问题。 当你这样做时:

 io.on('connection', function(socket){ socket.on('event', function(){ console.log('event fired'); }); socket.on('disconnect', function(){ console.log('user disconnected'); }); }); 

socket事件监听器是在io.on()的callback函数中创build的。 断开连接后,这些事件监听器并没有真正被删除..我应该这样做:

 socket.on('disconnect', function(){ delete socket.namespace.sockets[this.id]; console.log('user disconnected'); }); 

除非socket.io在内部删除io.on()callback中的所有事件。 事件听者坚持