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

设计实时web应用程序(Node.js和socket.io),node.js,webserver,push,socket.io,reverse-proxy,Node.js,Webserver,Push,Socket.io,Reverse Proxy,我想问一些好的做法。我有一个Node.js(Express)web服务器和socket.io推送服务器(以防技术问题)。我可以将它们都转换为一个应用程序,但我希望它们分开(如果需要,它们可以相互通信)。这样做有两个原因: 这将更容易管理、调试和开发应用程序 扩展应用程序会容易得多。如果需要,我可以添加另一个推送服务器或web服务器实例 这至少是我所相信的。唯一的问题是,当客户端连接到单独的socket.io服务器时,它不会发送cookie(不同端口、跨域策略) 我想到的解决方法是在前面放置一个反

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

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

    我想到的解决方法是在前面放置一个反向代理(也写在Node.js中),检查我们正在处理什么样的请求,并相应地将其发送到web服务器或推送服务器。很好,现在我们在web服务器和推送服务器中都有cookie。反向代理可以是一个负载平衡器,这是一个额外的好处


    我觉得这是个好主意。你觉得这个设计怎么样?也许还有其他解决cookie问题的方法吗?

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



    是的,HaProxy真的很酷。你用WebSocket工作了吗??因为我在这里遇到了一些问题。我会将这个答案标记为正确,因为它给了我很多好的想法(HAProxy是最好的:))。其中一个后果是我不想再使用Socket.IO(请参阅此问题:了解更多详细信息)。非常感谢。