Socket.io redisstore
Posted
技术标签:
【中文标题】Socket.io redisstore【英文标题】: 【发布时间】:2013-12-07 11:26:22 【问题描述】:使用 socket.io redisstore 适配器/存储 (?),是否可以“查看”所有客户端并“选择”甚至是未直接连接到您的 socket.io 服务器的客户端?还是仅限于 socket.io 的“房间”功能?
举一个实际的例子,同一个聊天室中的两个用户连接到两个不同的 socket.io 节点,redisstore 适配器/存储是否可以在不对代码进行大量更改的情况下从一个用户耳语到另一个用户您已经有一个有效的单进程/服务器实现了吗?
我问的原因是我目前还没有在我的项目的开发阶段过度关注缩放(我也没有时间深入研究 node.js 缩放背后的概念,这看起来与我已经习惯了(现在是第一个成熟的 node.js 项目)),但是我不想构建一个无法扩展的基础设施。
【问题讨论】:
如果您使用的是节点集群,您可能还会使用 clusterhub 之类的东西,并且可能使用socket.io clusterhub 来跨集群共享数据,然后这不再是一个真正的问题,但作为据我所知,您仍然必须使用房间来识别用户等。 【参考方案1】:Redis 存储 (/lib/stores/redis.js) 仅与 redis pub-sub 一起用于服务器之间的消息传播。因此,如果您想获取已连接用户的列表 - 您必须自己完成。
但是如果你想在两个用户之间传递消息——我认为这不会是标准 socket.io+redis 库的问题,因为 redis pub-sub 对于在服务器\进程之间传递消息非常有用。
【讨论】:
以上是关于Socket.io redisstore的主要内容,如果未能解决你的问题,请参考以下文章
未找到 Socket.io.js(node.js + express + socket.io)