如何跨多个服务器nodejs和socket.io存储socket.id

时间:2019-04-17 03:43:51

标签: mysql node.js mongodb redis socket.io

跨多个服务器存储用户的socket.id的最佳方法是什么?以一个简单的聊天应用程序为例,如果位于不同服务器上的两个用户正在互相发送消息,则这两个服务器必须将每个用户的套接字ID存储在某个地方,以便他们可以将消息从一个用户发送给另一个用户。

当前,我正在使用Redis哈希存储每个用户的套接字ID(如果他们在线),但是如果用户有两个连接(例如,他们打开了聊天应用程序的两个选项卡),则此方法将无效。最好的方法是继续使用redis,但是以一种使用户两次连接的方式使其工作的方式来重组数据结构的方法,还是迁移到mongodb或mysql之类的方法更好?

我还想使用一种使数据过期的方法,例如,如果套接字ID存储超过24小时,则应将其自动删除。我已经考虑过使用redis来做到这一点,但是似乎不可能只删除散列中的一对。过期数据可以在mysql或mongodb中完成吗?

1 个答案:

答案 0 :(得分:0)

您尝试过套间吗?

check this link for rooms and namespaces

例如,如果用户有多个连接,请使用唯一名称(可能是userId或其他名称)将其加入一个房间