Socket.io客户端到客户端逻辑,拥有大量用户

时间:2016-05-03 08:53:56

标签: javascript node.js sockets websocket socket.io

我正在尝试使用socket.io以及node.jsAndroid在我的应用中实现客户端到客户端的消息传递。

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

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

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

现在我有两个问题:

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

  • 如果我完全错了(我可能会),将所有用户socketids存储在一个变量中是一个好习惯吗?如果是的话,对于50000以上的用户来说,它仍然可以吗?如果不是,我是否应该找到另一种解决方案,例如在数据库中存储用户socketids

1 个答案:

答案 0 :(得分:1)

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

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