2012-03-08 691 views
1

我用快遞,Redis的,蒙戈和socket.io的Node.js應用的工作方式prefectly。 今天,當我介紹集羣,我發現它的工作原理,但應用程序有很多消息,客戶不handshaken客戶端應該重新連接,socket.io集羣

'client not handshaken' 'client should reconnect' 

很多時候從socket.io的響應時間是非常糟糕的,高達幾秒鐘。

然後我用HTTP代理前結束,從瀏覽器的請求。 Chrome瀏覽器間歇性地工作而不會丟棄這些消息。有時如果我再次打開相同的URL,它會開始拋出這些消息,並且響應延遲。火狐的行爲方式也是一樣的。隨機地,它開始不斷扔這些消息.. 看起來像集羣環境中的websocket的一些問題。

我的node.js版本是0.6.10,socket.io 0.9.0,2.5.9表示,HTTP代理0.8.0

回答

3

這是最有可能是因爲Socket.IO在內存中保存你的連接,所以每臺服務器都有自己的一套客戶端。要在多個服務器實例上共享Socket.IO,請使用它們的RedisStore進行查看。 Express會話也是如此,您可以選擇connect-redis作爲選項。

+5

這裏是[另一個解決方案](https://github.com/fent/socket.io-clusterhub)如果你不想設置redis數據庫。 – fent 2012-03-08 13:49:29

+0

謝謝。我懷疑這是問題所在。我只是看着socket.io-clusterhub。似乎是一個不錯的方法。感謝那。將嘗試此..再次感謝。 – user644745 2012-03-08 14:11:35

+0

像魅力一樣工作。謝謝。 – user644745 2012-03-08 14:19:53

相關問題