我正在尝试使用socket.io
以及node.js
和Android
在我的应用中实现客户端到客户端的消息传递。
我搜索了一下,发现了很多教程,解释了在通过socket.io
套接字发送消息时如何处理特定客户端的目标。
Send message to specific client with socket.io and node.js
解决方案几乎总是一样的:创建一个hashmap对象,将用户信息(例如username
,email address
(或任何唯一允许识别它的内容)与其socketid
链接起来。
然后调用io.clients[sessionID].send()
现在我有两个问题:
如果只有app
的一个实例正在运行,这会有效,但想象一下我的应用是否分为多个实例(适用于大型应用)。
如果连接到实例A
的客户X
想要向连接到实例B
的用户Z
发送消息,该怎么办?如果,如示例所示,socketids
直接存储在脚本中存在的简单对象中,则某些套接字不会知道其他实例中存在的其他用户。
如果我完全错了(我可能会),将所有用户socketids
存储在一个变量中是一个好习惯吗?如果是的话,对于50000以上的用户来说,它仍然可以吗?如果不是,我是否应该找到另一种解决方案,例如在数据库中存储用户socketids
?
答案 0 :(得分:1)
您可以使用在所有应用实例之间共享的redis实例。你一石二鸟。
redis会将所有套接字ID存储在一个集中的位置。