我希望其他人以前遇到过这个问题:
问题描述
我已将 Socket.IO 配置为使用 redis-store 模块,该模块非常适合在向房间广播/发出事件时保持我们的节点实例同步。但是,我一直在测试故障点,似乎当 redis 实例重新启动时,节点服务器停止接收来自其他节点的消息。
这是我设置socket.io客户端的方式(在这段代码之前创建redis连接)
// Setup the socket server for web clients
self.ioServer = socketIo.listen(9000);
self.ioServer.enable('browser client minification'); // send minified client
self.ioServer.set('log level', 3);
self.ioServer.set( 'store', new socketIo.RedisStore ({
redisPub: self.redisPub,
redisSub: self.redisSub,
redisClient: self.redisStore
})
);
本质上,每当 redis 崩溃/重启时,socket.io redis-store 无法继续通过 redis 向其他节点服务器发送事件。
重新连接到 redis 服务器是否需要采取任何特殊步骤?我花了很多时间四处寻找,希望能找到解决这个问题的方法,但没有任何运气。
问候,
-瑞安