他の誰かが以前にこの問題に遭遇したことを願っています:
問題の説明
redis-store モジュールを使用するように Socket.IO を構成しました。これは、ルームへのブロードキャスト/イベントの発行時にノード インスタンスの同期を維持するのに最適です。ただし、私は障害点をテストしており、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
})
);
本質的に、socket.io redis-store は、redis がクラッシュ/再起動するたびに、redis を介して他のノード サーバーにイベントを送信し続けることができません。
redis サーバーに再接続するために必要な特別な手順はありますか? この問題の解決策を見つけるためにかなりの時間を費やしましたが、うまくいきませんでした。
よろしく、
-ライアン