2012-03-08 250 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

相关问题