设计实时Web应用程序(Node.js和socket.io)

时间:2012-05-30 08:35:41

标签: node.js webserver push socket.io reverse-proxy

我想询问一些好的做法。我有一个Node.js(Express)Web服务器和socket.io推送服务器(如果技术很重要)。我可以把它们都变成一个应用程序,但我希望它们分开(如果需要,它们可以相互通信)。这样做有两个原因:

  1. 管理,调试和开发应用程序会更容易;
  2. 扩展应用程序会容易得多。如有必要,我可以添加推送服务器或Web服务器的另一个实例;
  3. 这至少是我所相信的。唯一的问题是,当客户端连接到单独的socket.io服务器时,它将不会发送cookie(不同的端口,跨域策略)。

    我提出的解决方法是在前面放置一个反向代理(也用Node.js编写)并检查我们正在处理的请求类型,并将其发送到Web服务器或相应地推送服务器。好的,现在我们在Web服务器和推送服务器中都有cookie。反向代理可以是负载均衡器,这是额外的奖励。

    对我来说这似乎是一个好主意。你怎么看待这个设计?也许还有其他针对cookie问题的解决方法吗?

1 个答案:

答案 0 :(得分:1)

我最近做了类似的事情,我们最初使用了node.js反向代理但遇到了可靠性/可伸缩性问题。我们发现服务静态文件和代理请求最好留给nginx。 haproxy也是独立代理的一种非常可行的解决方案。

HaProxy
Nginix as a reverse proxy