Socket.io Redis存储

5
使用socket.io redisstore适配器/存储器,是否可以“查看”所有客户端并“选择”甚至没有直接连接到您的socket.io服务器的客户端?还是这仅限于socket.io的“房间”功能? 举个实际的例子,在同一个聊天室中的两个用户连接到两个不同的socket.io节点,如果您已经有一个工作的单进程/服务器实现,redisstore适配器/存储器是否可以使您能够轻松地从一个用户向另一个用户发送私信? 我之所以问这个问题,是因为我目前还没有进入项目开发阶段,所以不会过度关注扩展性(也没有时间深入了解与我所熟悉的内容非常不同的node.js扩展性概念),但我不想构建一个无法扩展的基础架构。

如果您正在使用节点集群,那么您可能还会使用类似于clusterhub的东西,以及socket.io clusterhub来在集群之间共享数据,然后这就不再是一个问题了,但据我所知,您仍然需要使用房间来识别用户等。 - adeneo
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1
Redis存储(/lib/stores/redis.js)只能使用redis pub-sub来实现服务器之间的消息传播。因此,如果您想获取已连接用户列表,则必须自己完成。但是,如果您想在两个用户之间传递消息-我认为使用标准的socket.io+redis库不会有问题,因为redis pub-sub非常适用于服务器/进程之间的消息传递。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,