我的node.js应用程序与express、redis、mongo和socket.io完美结合。今天,当我介绍集群时,我发现它是有效的,但应用程序有很多消息
'client not handshaken' 'client should reconnect'
很多时候,socket.io的响应时间非常糟糕,增加了几秒钟。
然后我使用http代理前端处理来自浏览器的请求。Chrome可以间歇性地工作,不会弹出这样的消息。有时,如果我再次打开同一个URL,它会开始抛出这些消息,并且响应会延迟。Firefox也有同样的行为。随机地,它开始连续抛出这些消息。。集群环境中的websocket似乎有问题。
我的node.js版本是0.6.10,socket.io 0.9.0,express 2.5.9,http proxy 0.8.0
这很可能是因为Socket.IO将连接保存在内存中,因此每个服务器都有自己的客户端集。要在多个服务器实例上共享Socket.IO,请研究使用它们的RedisStore
。这同样适用于Express会话,其中connect-redis
是一个选项。