Nodejs将连接的套接字保存在房间上
Nodejs save connected sockets on rooms
据我们所知,套接字的创建是唯一的id。当我的用户创建房间并邀请用户加入时。我不能保存和存储已加入房间的用户。当用户在房间上连接时,他喜欢服务器存储此连接,断开连接并再次连接后自动连接到最新连接的房间。如何存储套接字并自动加入用户?
我找不到任何关于这种能力的解决办法。因为每次连接时套接字都改变了。
有简单的解决方法吗?提前感谢
您需要为每个用户创建某种userID,并且通常将其存储在cookie中。然后,如果您想要持久的房间,您必须创建自己的服务器端数据结构,以跟踪您希望每个用户进入的房间。而且,每次在房间中添加或删除用户时,您都可以修改自己的数据结构,以便正确地跟踪该状态。
然后,当用户连接时,您可以从cookie中获取他们的userID,并查看您的数据结构,以查看应该将该连接放在哪些房间中。然后,为了检查内存管理,您必须在一段时间不活动后,以某种方式将用户从数据结构中过期,这样他们就不会永远留在那里。(也许你可以在他们最后一次访问的时间戳,然后每小时遍历一次数据结构,删除一段时间没有访问的用户)。
如果您希望此信息在服务器重新启动后仍然有效,那么您必须将其持久保存到磁盘,然后在启动时重新加载该信息。如果你已经使用数据库作为应用的一部分,你可以将信息存储在数据库中,或者,如果没有,你可以只是把你的内部数据结构写到磁盘上,可能是JSON,然后在你的服务器启动时读取。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 用于检查数组中是否存在元素的javascript自定义方法
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在将事件处理程序添加到不存在的类
- 是否存在React Native“;WEB代码安全防护”;
- 一个密码测试程序,如果存在空格,它会提醒用户
- 验证会话中是否存在对象's数组
- javascript如果图像不存在don't加载它
- 如何查找值是否存在于二叉树中
- IE9的HTML5 Canvas getImageData()函数存在问题
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 希望日期开始结束于while循环中的一个房间id的一个数组
- CORS-服务器端cookie没有保存在chrome浏览器上
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- Socket.io发射到不存在的房间