我有多个流程&服务器,我正在使用具有会话亲和性的socket.io-redis(在Heroku上)。
当客户端连接时,我将客户端用户ID的映射存储到Redis中客户端的套接字ID。断开连接后,我从Redis中删除了客户端的用户ID。
我希望能够通过查找客户端的套接字ID将消息推送到客户端,然后将消息发送到特定的套接字ID。
执行此操作的一种方法是io.to(socketId).emit(...)
。但是,这不允许我发送带有消息的回调,我真的很喜欢,因为我想确认收到消息。
我发现的另一种方式是io.connected[socketId].emit(...)
。这个问题是它不能扩展到多个服务器,因为io.connected
对象在每个服务器上可能不一定相同,因为它只记录服务器本身连接的套接字。但是,此解决方案允许回调。
有没有办法解决这个问题,以便我可以从任何服务器或进程向特定的套接字ID发出消息,并发送带有消息的回调?