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

Posted

技术标签:

【中文标题】设计实时 Web 应用程序(Node.js 和 socket.io)【英文标题】:Designing real-time web application (Node.js and socket.io) 【发布时间】:2012-05-30 08:35:40 【问题描述】:

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

    将更容易管理、调试和开发应用程序; 扩展应用程序会容易得多。如有必要,我可以添加另一个推送服务器或 Web 服务器实例;

这至少是我所相信的。唯一的问题是,当客户端连接到单独的 socket.io 服务器时,它不会发送 cookie(不同的端口,跨域策略)。

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

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

【问题讨论】:

【参考方案1】:

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

HaProxyNginix as a reverse proxy

【讨论】:

是的,HaProxy 真的很酷。您是否使它与 WebSockets 一起使用?因为我在这里遇到了一些问题。 我会将此答案标记为正确,因为它给了我很多好主意(HAProxy 是最好的:))。后果之一是我不想再使用 Socket.IO(有关更多详细信息,请参阅此问题:***.com/questions/11115863/…)。谢谢!

以上是关于设计实时 Web 应用程序(Node.js 和 socket.io)的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 学习一

10个适合web前端开发的node.js框架

node.js

node.js

使用 AMQP 和 Node.JS 进行实时数据同步

node.js Web实时消息后台服务器推送技术---GoEasy