我已经读过socket.io文件,但它很差。 我有几个这样的问题:
room.isPlaying
,
room.createdDate
... socket.io
房间?答案 0 :(得分:1)
如何为一个房间定义属性,如:room.isPlaying,room.createdDate
socket.io不允许您访问每个房间的公共对象。
您可以为每个房间创建自己的对象,并将它们保存在您自己的Map
对象中。因此,每当您将某人添加到某个房间时,您会看到您的地图中是否已有一个房间对象,如果没有,则创建一个房间对象。然后你可以在那个对象上保持房间状态。
房间数据存储在哪里?在记忆中?没有人留在那个房间后,记忆会自动释放吗?因为如果有太多空房间创建将消耗服务器内存
socket.io拥有自己的状态信息,可以跟踪给定房间中的连接。它没有记录该状态,但您可以在调试器中研究源代码或研究状态,并找到所有内容的存储位置。
例如:
io.nsps['/'].adapter.rooms
是一个对象,其属性是/
命名空间中所有活动房间的列表。
或者,您可以使用它来获取所有活动房间的数组:
Object.keys(io.nsps['/'].adapter.rooms)
在没有人离开那个房间后,记忆会自动释放吗?因为如果有太多空房间创建将消耗服务器内存
是的,当房间空了时,将释放记忆。
现在,我正在使用对象来存储房间数据并处理空房间:当没有人离开时删除。使用默认的socket.io房间是否一样?
socket.io将数据保存在内存中。当房间变空时,它会清理干净。