Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保存每个客户端的socket.io数据_Javascript_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 保存每个客户端的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. }); 这是否正常工作,或者如果其他人加入,它是否会混合?如果它不能正常工作,那么哪种方式可以呢?您所拥有的将为每个单独的连接创建一个闭包,以便它可以很好

如何在每个客户端的Socket.io上保存数据?然而,当我阅读时,我想到了这一点,它可能是无效的:

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

});

这是否正常工作,或者如果其他人加入,它是否会混合?如果它不能正常工作,那么哪种方式可以呢?

您所拥有的将为每个单独的连接创建一个闭包,以便它可以很好地处理要保存在内存中的每个套接字数据。然后,您需要将所有其他套接字通信放在同一个闭包中,以便它也可以访问数据。这样做的缺点是很难从外部获取数据,这有时是必需的,但有时不是

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


有时,另一种方法是使用socket.id作为共享数据结构的索引,或者如果使用任何类型的用户id身份验证,则使用该id作为共享数据结构的索引。

是的,它可以工作。这是最好的方法吗?也许,也许不是。