【问题标题】:What are issues with using WebSockets with proxies and load balancers?将 WebSockets 与代理和负载平衡器一起使用有什么问题?
【发布时间】:2013-03-26 21:58:26
【问题描述】:

我正在阅读SockJS node server。文档说:

WebSocket 通常不能很好地与代理和负载平衡器配合使用。在 Nginx 或 Apache 后面部署 SockJS 服务器可能会很痛苦。幸运的是,最近版本的优秀负载均衡器 HAProxy 能够代理 WebSocket 连接。我们建议将 HAProxy 作为前线负载均衡器,并使用它来将 SockJS 流量与普通 HTTP 数据分开。

我很好奇是否有人可以扩展 HAProxy 在这种情况下正在解决的问题?具体来说:

  1. 为什么 websocket 不能很好地与代理和负载平衡器配合使用?
  2. 为什么在 Apache 后面部署 Sockjs 服务器很痛苦?

【问题讨论】:

    标签: websocket haproxy sockjs


    【解决方案1】:

    1。为什么 websocket 不能很好地与代理和负载平衡器配合使用?

    我建议您阅读 Peter Lubbers 在How HTML5 Web Sockets Interact With Proxy Servers 上撰写的这篇文章。它应该涵盖您需要了解的有关 WebSocket 和代理的所有信息 - 以及负载均衡器。

    2。为什么在 Apache 后面部署 Sockjs 服务器很痛苦?

    a module for handling WebSocket connections,但目前 Apache 本身并不支持 WebSocket,根据 apache 上提交的这个错误 - HTML5 Websocket implementation,它看起来也不会很快支持。建议是它实际上更适合模块模式。

    因此,它之所以“痛苦”,仅仅是因为它并不容易——没有官方支持,因此它没有其他可能的社区用途。

    SockJS 基于 HTTP 的后备传输可能还存在其他问题。因此,您需要代理 WebSocket 连接(使用 apache-websocket 模块)以及使用回退时的 HTTP 请求。

    与此相关:Nginx v1.3 was released 2 月支持 WebSocket。

    【讨论】:

    • 谢谢,Peter Lumbbers 的文章内容丰富。另外,是否每个运行 Apache 并使用 Web 套接字的人都必须安装您所指的 apache-websocket 模块?如果您使用的是 socket.io 或 sockjs 等库,是否需要此模块?
    • 您不必安装模块,不。您可以与标准 Web 堆栈并行运行实时基础架构。因此,使用 socket.Io/sockjs - 不,不需要该模块。
    • 哦,没错,因为 socket.io 和 sockjs 使用的是在 node.js 上运行的服务器,而不是在 Apache 上。
    猜你喜欢
    • 2017-09-21
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2013-08-20
    • 2017-08-29
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多