socket.io を使っていると以下が問題になることがある。 これらを解決するのが socket.io-redis, socket.io-emitter, sticky-session というわけ。 【問題1】 clusterで複数プロセスを起動していると複数プロセス間で通信ができなくなる。 ユーザー1が接続を開始するとclusterがプロセス1に接続するように割り振る。 次にユーザー2が接続を開始するとclusterはプロセス2に接続するように割り振る。 この場合、ユーザー1とユーザー2が同じルームに所属していても、 接続を割り振られたプロセスが違うので通信できなくなる。 つまり、ユーザー1がルームに送信したメッセージをユーザー2が受信できない。 【問題2】 socket.ioはクライアントがトリガーになってメッセージを送信するので、 サーバからPUSHするタイプの送信はできない。 i