Websocket haproxy和socket.io未完全工作

Websocket haproxy和socket.io未完全工作,websocket,socket.io,haproxy,Websocket,Socket.io,Haproxy,我已经尝试了博客和stackoverflow中发布的所有可能的haproxy配置,但我仍然无法让haproxy和socket.io 100%工作。在大多数“支持”web套接字的浏览器中,它会失败,并在错过心跳后返回长时间轮询。浏览器似乎进行了初始连接(nodejs调试),但我无法让客户端接收连接响应。还有其他人有类似的问题吗?下面是我尝试过的软件版本号和一些配置 haproxy 1.4.18 节点0.6.5 socket.io 0.8.7 Haproxy配置(我已经尝试了更多的选项):

我已经尝试了博客和stackoverflow中发布的所有可能的haproxy配置,但我仍然无法让haproxy和socket.io 100%工作。在大多数“支持”web套接字的浏览器中,它会失败,并在错过心跳后返回长时间轮询。浏览器似乎进行了初始连接(nodejs调试),但我无法让客户端接收连接响应。还有其他人有类似的问题吗?下面是我尝试过的软件版本号和一些配置

  • haproxy 1.4.18
  • 节点0.6.5
  • socket.io 0.8.7
Haproxy配置(我已经尝试了更多的选项):

  • (减去ssl内容)
Web套接字工作于:

  • Safari 5(Windows)
  • Chrome11(Linux)

WebSocket不能被反向代理,因为客户端在头文件未在内容长度头文件中公布后必须发送的8字节数据,因此在握手完成之前,中间方不会转发该数据。因为握手需要8个字节才能完成,所以握手永远不会完成,并且会死锁。这不是唯一的来源。更多的来源证实了它们不能被反向代理。

我从等式中删除了haproxy,socket.io可以完美地工作,因此,我的haproxy配置中一定是出了问题,或者由于某种原因,这两个配置无法很好地配合。如果我在socket.io切换协议之前停止haproxy,则会将连接web套接字消息发送到客户端。我现在正在使用for配置。我花了相当多的时间尝试获得正确的haproxy配置。在我的例子中,我希望web和flash套接字能够通过,但没有其他传输。我还想在haproxy终止ssl。已经有一段时间了,你可能已经解决了这个问题。然而,我在博客中提到了我的解决方案:Cheers,Christian这一点完全错误,与最初的websocket草案有关,它与HTTP不兼容。WebSocket可以反向代理,因为它与HTTP兼容。