2012-03-08 13 views
1

express、redis、mongo、socket.ioの私のnode.jsアプリケーションが完全に機能します。 socket.ioからクライアントはハンドシェイクされていないクライアントはクラスタ内のsocket.ioを再接続する必要があります

'client not handshaken' 'client should reconnect' 

何度も応答時間が最大で数秒、非常に悪いです、私はクラスタを導入したとき は今日、私はそれが動作することがわかったが、大量のメッセージがアプリです。

次に、http-proxyフロントエンドを使用してブラウザからのリクエストを終了しました。 Chromeはそのようなメッセージをスローしなくても断続的に動作します。同じURLを再度開くと、これらのメッセージがスローされ、応答が遅れることがあります。 Firefoxも同じように動作します。無作為に、これらのメッセージを連続的にスローし始めます。 クラスタ化された環境でwebsocketの問題があります。

マイNode.jsのバージョンは、HTTPプロキシ、2.5.9を表現し、0.9.0 socket.io、0.6.10である0.8.0

答えて

3

Socket.IOは、メモリ内のあなたの接続を維持しますので、これは、おそらくです各サーバーには独自のクライアントセットが用意されています。複数のサーバーインスタンスでSocket.IOを共有するには、RedisStoreを使います。 Expressセッションにも同じことが適用されます。ここでは、connect-redisをオプションとして使用します。

+5

redis dbを設定したくない場合は、ここに[別の解決策](https://github.com/fent/socket.io-clusterhub)があります。 – fent

+0

ありがとうございます。私はこれが問題だと思った。私はsocket.io-clusterhubを見ました。いいアプローチだと思われる。それに感謝します。これを試してみる..もう一度ありがとう。 – user644745

+0

は魅力的な働きをしています。ありがとうございました。 – user644745

関連する問題