13

我正在阅读SockJS 节点服务器。文档说:

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

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

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

1 回答 1

17

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

我建议您阅读Peter Lubbers撰写的关于HTML5 Web 套接字如何与代理服务器交互的文章。它应该涵盖您需要了解的有关 WebSocket 和代理的所有信息 - 以及负载均衡器。

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

一个用于处理 WebSocket 连接的模块,但目前 Apache 本身并不支持 WebSocket,根据 apache - HTML5 Websocket implementation上提交的这个错误,它看起来也不会很快支持。建议是它实际上更适合模块模式。

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

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

与此相关:Nginx v1.3于 2 月发布,支持 WebSocket。

于 2013-04-09T22:23:18.490 回答