2016-05-03 178 views
1

我正试图在我的应用中使用socket.ionode.jsAndroid来实现客户端到客户端消息传递。Socket.io客户端到客户端逻辑,有很多用户

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

Send message to specific client with socket.io and node.js

的解决方案几乎都是一样的:创建一个HashMap对象,链接的用户信息,如它的usernameemail address(或任何唯一允许识别它),其socketid。 然后调用io.clients[sessionID].send()

现在我有两个问题:

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

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

回答

1

您可以使用redis实例,在所有应用程序实例之间共享。一石二鸟。

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

+0

不错,你会建议我保留对象来存储socketids吗? – FrenchFalcon

+0

在redis数据库中。我已经修改了我的答案,以清楚地反映这一点。 – overburn

+0

你指的是这个吗? http://socket.io/docs/using-multiple-nodes/ – FrenchFalcon