2013-11-22 36 views
5

使用socket.io redisstore适配器/存储(?),是否有可能“查看”所有客户端,并且“选择”即使是不直接连接到您的socket.io服务器的客户端?或者,这是否仅限于socket.io的“房间”功能?Socket.io redisstore

举一个实际的例子,同一个聊天室中的两个用户连接到两个不同的socket.io节点,redisstore适配器/存储是否可以让一个用户窃听对方,而不会对代码进行大的更改如果你已经有一个单一的流程/服务器实施?

我问的原因是我目前还没有处于我的项目的开发阶段,过度关注缩放(我也没有时间深入了解node.js缩放后面的概念,这看起来非常不同从我习惯的(第一个完整的node.js项目现在)),,但是我不想构建一个基础结构,这是不可能扩展的。

+0

如果您使用的是节点集群,您可能也会使用类似clusterhub的东西,或许使用[socket.io clusterhub](https://github.com/fent/socket.io-clusterhub)来共享数据跨群集,然后它不再是一个问题,但据我所知,你仍然需要使用房间来识别用户等。 – adeneo

回答

1

Redis存储(/lib/stores/redis.js)只能与redis pub-sub一起用于服务器之间的消息传播。所以如果你想获得连接用户列表 - 你必须自己做。

但是,如果你想在两个用户之间传递消息 - 我认为这对标准的socket.io + redis库来说不会有问题,因为redis pub-sub在服务器\进程之间传递消息非常有用。

相关问题