我的node.js应用程序使用express,redis,mongo和socket.io完美地工作。 今天当我介绍群集时,我发现它有效,但应用程序有很多消息,
'client not handshaken' 'client should reconnect'
很多次socket.io的响应时间非常糟糕,持续几秒钟。
然后我使用http-proxy前端结束来自浏览器的请求。 Chrome会间歇性地工作而不会抛出此类消息。有时,如果我再次打开相同的URL,它会开始抛出这些消息,并且响应会延迟。 Firefox的行为方式也一样。随机,它开始连续抛出这些消息.. 看起来像群集环境中的websocket存在一些问题。
我的node.js版本是0.6.10,socket.io 0.9.0,表示2.5.9,http-proxy 0.8.0
答案 0 :(得分:3)
这很可能是因为Socket.IO将您的连接保存在内存中,因此每个服务器都拥有自己的一组客户端。要在多个服务器实例上共享Socket.IO,请查看使用他们的RedisStore
。这同样适用于Express会话,您可以选择connect-redis
。