每个客户端保存socket.io数据
Saving socket.io data per client
如何在Socket.io上为每个客户端保存数据?我已经想到了这个,然而当我读到它可能是无效的:
io.on('connection', function(socket) {
console.log('socket connected');
var user = {};
//do stuff with user.
});
这正常工作吗?或者如果有其他人加入,它会混合吗?如果它不能正常工作,那该怎么办?
您所拥有的为每个单独的连接创建一个闭包,这样它就可以很好地处理您想要保存在内存中的每个套接字数据。然后,您需要将所有其他套接字通信都放在同一个闭包中,这样它也可以访问数据。这样做的缺点是很难从外部获取数据(这有时是必需的,但有时不是)。
这样做的一个缺点是数据是暂时的,不会持续到当前连接之后。如果存在任何类型的连接或客户端问题,并且连接的socket.io
被丢弃并重新连接,那么将创建代表新连接的新闭包,并且在套接字关闭时将垃圾收集原始闭包。
有时这样做的另一种方法是使用socket.id
作为共享数据结构的索引,或者如果您使用任何类型的身份验证和userID来将该id用作共享数据结构中的索引。
相关文章:
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 通过node.js和socket.io向特定用户发送数据
- Socket.io socket.emit 不将数据传递到服务器
- 使用其他javascript文件nodejs和express发送和获取数据 socket.io
- 如何使用socket.io获取cookie数据
- 是否自动更新套接字连接数据?socket.io
- 每个客户端保存socket.io数据
- 如何在express中使用socket.io发布多个对象数据
- Socket.IO:如何在同一服务器中的Socket.on()事件之间通信/交换数据
- 使用socket.io发送数据
- Socket.io-向发送方和客户端发送不同的数据
- 如何从我的 import.io API 获取数据
- 将数据追加到所有 Socket.io 客户端发射器
- 如何使用 import.io 中的数据创建 Web 应用
- 如果在节点 JS 中落后于 Socket.IO,则丢弃数据包
- Socket.io - 每 34 毫秒接收一次数据
- Socket.io 清理传入数据 (XSS)
- Socket.IO 将数据发送到房间给自己
- Node.js + Socket.io 如何从 PHP 接收数据
- Socket.io 数据包在断开连接和重新连接之间丢失