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