Javascript 保存每个客户端的socket.io数据
如何在每个客户端的Socket.io上保存数据?然而,当我阅读时,我想到了这一点,它可能是无效的:Javascript 保存每个客户端的socket.io数据,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,如何在每个客户端的Socket.io上保存数据?然而,当我阅读时,我想到了这一点,它可能是无效的: io.on('connection', function(socket) { console.log('socket connected'); var user = {}; //do stuff with user. }); 这是否正常工作,或者如果其他人加入,它是否会混合?如果它不能正常工作,那么哪种方式可以呢?您所拥有的将为每个单独的连接创建一个闭包,以便它可以很好
io.on('connection', function(socket) {
console.log('socket connected');
var user = {};
//do stuff with user.
});
这是否正常工作,或者如果其他人加入,它是否会混合?如果它不能正常工作,那么哪种方式可以呢?您所拥有的将为每个单独的连接创建一个闭包,以便它可以很好地处理要保存在内存中的每个套接字数据。然后,您需要将所有其他套接字通信放在同一个闭包中,以便它也可以访问数据。这样做的缺点是很难从外部获取数据,这有时是必需的,但有时不是 这样做的一个缺点是数据是暂时的,不会持续到当前连接之后。如果存在任何类型的连接或客户端故障,并且已连接的socket.io被删除并重新连接,则将创建代表新连接的新关闭,并且在关闭套接字时将对原始关闭进行垃圾收集
有时,另一种方法是使用socket.id作为共享数据结构的索引,或者如果使用任何类型的用户id身份验证,则使用该id作为共享数据结构的索引。是的,它可以工作。这是最好的方法吗?也许,也许不是。