使用socket.io-redis&多个服务器/进程。如何使用回调将消息发送到特定套接字ID?

时间:2017-01-21 17:51:22

标签: node.js sockets heroku socket.io socket.io-redis

我有多个流程&服务器,我正在使用具有会话亲和性的socket.io-redis(在Heroku上)。

当客户端连接时,我将客户端用户ID的映射存储到Redis中客户端的套接字ID。断开连接后,我从Redis中删除了客户端的用户ID。

我希望能够通过查找客户端的套接字ID将消息推送到客户端,然后将消息发送到特定的套接字ID。

执行此操作的一种方法是io.to(socketId).emit(...)。但是,这不允许我发送带有消息的回调,我真的很喜欢,因为我想确认收到消息。

我发现的另一种方式是io.connected[socketId].emit(...)。这个问题是它不能扩展到多个服务器,因为io.connected对象在每个服务器上可能不一定相同,因为它只记录服务器本身连接的套接字。但是,此解决方案允许回调。

有没有办法解决这个问题,以便我可以从任何服务器或进程向特定的套接字ID发出消息,并发送带有消息的回调?

0 个答案:

没有答案