我正在考虑为每个根据用户ID进行连接的用户腾出空间。我会遇到记忆问题这样做吗?或者当房间内所有连接的客户都不在时,房间会消失吗?在socket.io中创建太多房间是否有任何问题?
1
A
回答
3
socket.io中的一个房间只是一个带有套接字列表的Javascript对象。一个房间只要有一个插座就存在。只要房间中的最后一个插座断开连接或离开房间,房间物体本身就会被移除。
如果您没有意识到,socket.io已经根据socket.id
值为每个用户创建了一个空间。所以,这已经存在。
我会遇到内存问题这样做吗?
房间并不是一个大型的数据结构,当它们没有套接字时它们会自动清理,所以我不希望你在房间中遇到内存问题。
或者当该房间中的所有连接客户端都消失后,房间是否会消失?
是,一间将在所有在 室连接的客户端都没有了释放。
房间存储在适配器对象中(允许通过redis支持跨多个服务器的分布式房间的架构),因此socket.leave(room)
方法最终告诉适配器从房间中移除套接字。适配器代码如下所示:
Adapter.prototype.del = function(id, room, fn){
this.sids[id] = this.sids[id] || {};
delete this.sids[id][room];
if (this.rooms.hasOwnProperty(room)) {
this.rooms[room].del(id);
if (this.rooms[room].length === 0) delete this.rooms[room];
}
if (fn) process.nextTick(fn.bind(null, null));
};
你可以看到有,经过插座已经从房间取出,代码检查,看看当前长度为0
,如果是的话,它删除了房间对象。
相关问题
- 1. 如何在socket.io的房间中创建/加入名称空间?
- 2. Socket.io对房间
- 3. Socket.io动态房间
- 4. Socket.io中的动态房间
- 5. 是否有可能通过节点socket.io创建后台任务
- 6. Socket.IO消息传递到多个房间
- 7. socket.io同时加入多个房间
- 8. Socket.io 1.4.5房间发出
- 9. 如何使用socket.io-p2p在房间内建立对等连接?
- 10. socket.io可以处理的最大房间数是多少?
- 11. 是否有一个redmine插件一次创建多个问题?
- 12. socket.io无法在房间播出
- 13. 明火创建一个房间的问题
- 14. 加入房间的Socket.io注册房间,但只加入空字符串房间
- 15. socket.io发射到所有房间,而不是指定的
- 16. 创建帮助函数以显示AlertView是否有任何问题?
- 17. 在JavaScript客户端中创建UUID是否有任何危险?
- 18. 是否有任何函数对象在STL中创建对象?
- 19. XMPPFramework - 如何创建一个MultiUserChat房间?
- 20. 在多线程环境中使用log4net是否有任何问题?
- 21. 很热在Redmine中为多个问题创建子任务?
- 22. 为持续交付创建大量Docker标记是否存在任何问题?
- 23. 不能发现所有连接在房间里的用户socket.io
- 24. 是否有任何API找出房间温度强度,光照强度等
- 25. PHP中是否有任何多态性?
- 26. 像在MySQL表中创建和修改日期zend框架中是否有任何automagic问题?
- 27. 是否有任何开源办理入住/退房系统?
- 28. 如何在Ejabberd中创建非匿名房间
- 29. 是否有任何功能在PHP创建的TIFF图像
- 30. 是否有可能有太多验证?