每个客户端保存socket.io数据

时间:2015-02-26 20:12:11

标签: javascript node.js sockets socket.io

您如何在每个客户端上保存Socket.io上的数据?我已经想到了这一点,但是因为我读它可能是无效的:

io.on('connection', function(socket) {
    console.log('socket connected');
    var user = {};
    //do stuff with user.

});

这是否正常,或者如果其他人加入会混合吗?如果它不像它应该那样工作,那么哪种方式呢?

1 个答案:

答案 0 :(得分:0)

您为每个单独的连接创建了一个闭包,因此它适用于您希望保留在内存中的每个套接字数据。然后,您需要将所有其他套接字通信放在同一个闭包中,以便它也可以访问数据。这样做的缺点是很难从外部获取数据(有时需要,但有时不需要)。

这样做的一个缺点是数据是暂时的,并且不会超出当前连接。如果出现任何类型的连接或客户端打嗝并且连接socket.io被删除并重新连接,则将创建代表新连接的新闭包,并且当套接字时将对原始闭包进行垃圾收集已关闭。

有时这样做的另一种方法是使用socket.id作为共享数据结构的索引,或者如果您使用任何类型的身份验证与userID一起使用该id作为共享数据的索引结构