Socket.io客户端到客户端的逻辑,有很多用户

我试图在我的应用程序中使用socket.ionode.jsAndroid实现客户端到客户端的消息传递。

我search了一下,发现了很多教程,解释了在通过socket.io套接字发送消息时如何处理针对特定客户端的问题。

用socket.io和node.js发送消息给特定的客户端

解决scheme几乎总是相同的:创build一个hashmap对象,将用户信息(如usernameemail address (或任何可以识别的唯一标识))与其socketid 。 然后调用io.clients[sessionID].send()

现在我有两个问题:

  • 如果只有一个app实例正在运行,这将工作,但想象如果我的应用程序分为多个实例(对于大型应用程序)。 如果连接到实例X的客户端A想要发送消息给连接到实例Z用户B ,该怎么办? 如果在示例中看到的是,直接将脚本存储在脚本中存在的简单对象中,则某些套接字将不知道其他实例中存在的其他用户。

  • 如果我完全错了(我可能),这是一个很好的做法,将所有用户的socketids存储在一个单一的variables? 如果是的话,50000+的用户环境还是可以的吗? 如果不是,我应该find另一个解决scheme,像在数据库中存储用户的socketids

你可以使用一个redis实例,在你所有的app实例之间共享。 一石二鸟。

redis会将所有套接字ID存储在一个集中的地方。