Nodejs将连接的套接字保存在房间上

Nodejs save connected sockets on rooms

本文关键字:存在 房间 保存 套接字 连接 Nodejs      更新时间:2023-09-26

据我们所知,套接字的创建是唯一的id。当我的用户创建房间并邀请用户加入时。我不能保存和存储已加入房间的用户。当用户在房间上连接时,他喜欢服务器存储此连接,断开连接并再次连接后自动连接到最新连接的房间。如何存储套接字并自动加入用户?

我找不到任何关于这种能力的解决办法。因为每次连接时套接字都改变了。

有简单的解决方法吗?提前感谢

您需要为每个用户创建某种userID,并且通常将其存储在cookie中。然后,如果您想要持久的房间,您必须创建自己的服务器端数据结构,以跟踪您希望每个用户进入的房间。而且,每次在房间中添加或删除用户时,您都可以修改自己的数据结构,以便正确地跟踪该状态。

然后,当用户连接时,您可以从cookie中获取他们的userID,并查看您的数据结构,以查看应该将该连接放在哪些房间中。然后,为了检查内存管理,您必须在一段时间不活动后,以某种方式将用户从数据结构中过期,这样他们就不会永远留在那里。(也许你可以在他们最后一次访问的时间戳,然后每小时遍历一次数据结构,删除一段时间没有访问的用户)。

如果您希望此信息在服务器重新启动后仍然有效,那么您必须将其持久保存到磁盘,然后在启动时重新加载该信息。如果你已经使用数据库作为应用的一部分,你可以将信息存储在数据库中,或者,如果没有,你可以只是把你的内部数据结构写到磁盘上,可能是JSON,然后在你的服务器启动时读取。