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