您如何在每个客户端上保存Socket.io上的数据?我已经想到了这一点,但是因为我读它可能是无效的:
io.on('connection', function(socket) {
console.log('socket connected');
var user = {};
//do stuff with user.
});
这是否正常,或者如果其他人加入会混合吗?如果它不像它应该那样工作,那么哪种方式呢?
答案 0 :(得分:0)
您为每个单独的连接创建了一个闭包,因此它适用于您希望保留在内存中的每个套接字数据。然后,您需要将所有其他套接字通信放在同一个闭包中,以便它也可以访问数据。这样做的缺点是很难从外部获取数据(有时需要,但有时不需要)。
这样做的一个缺点是数据是暂时的,并且不会超出当前连接。如果出现任何类型的连接或客户端打嗝并且连接socket.io
被删除并重新连接,则将创建代表新连接的新闭包,并且当套接字时将对原始闭包进行垃圾收集已关闭。
有时这样做的另一种方法是使用socket.id
作为共享数据结构的索引,或者如果您使用任何类型的身份验证与userID一起使用该id作为共享数据的索引结构