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

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

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

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

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

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

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

最佳答案

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

HaProxy
Nginix as a reverse proxy

关于node.js - 设计实时 Web 应用程序(Node.js 和 socket.io),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812742/

相关文章:

objective-c - Urban Airship - 使用 NSURLConnection 发送推送

mercurial - TortoiseHg:是否已推送变更集?

mysql - Node.js mysql 池问题

javascript - 如何替换node.js REDIS中已弃用的HMSET

rest - 从网站调用不安全的端点在 HTTPS 下运行 - nginx

nginx - nginx 守护进程开/关选项有什么区别?

Android - 如何第一个收到 WAP PUSH(彩信)

node.js - 序列化同一类的两个关系

node.js - 加速 Jenkins 构建

python - 在通用 Web 平台上从 HTML 执行 Python