将WebSockets与代理和负载均衡器一起使用有什么问题?

时间:2013-04-04 17:27:38

标签: websocket haproxy sockjs

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

  

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

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

  1. 为什么websockets对代理和负载均衡器不起作用?
  2. 为什么在Apache背后部署Sockjs服务器很痛苦?

1 个答案:

答案 0 :(得分:17)

  

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

我建议你阅读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请求。

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