我已经尝试了博客和stackoverflow中发布的所有可能的haproxy配置,但我仍然无法获得haproxy和socket。IO工作100%的时间。在大多数"支持"web套接字的浏览器中,它会失败,并在错过心跳后退回到长时间的轮询。浏览器似乎进行了初始连接(nodejs调试),但我无法让客户端接收连接响应。还有其他人有类似的问题吗?以下是我尝试过的软件版本号和几个配置。
- haproxy 1.4.18
- 节点0.6.5
- 插座。io 0.8.7
Haproxy配置(我已经尝试了更多的选项):
- http://engineering.bistri.com/post/14307969768/socket-io-haproxy-http-authentication
- HAProxy + WebSocket disconnect
- http://pastebin.com/H3XNv0TQ
- http://www.darkcoding.net/software/proxy-socket-io-and-nginx-on-the-same-port-over-ssl/(减去ssl的东西)
Web sockets工作在:
- Safari 5 (Windows) Chrome 11 (Linux)
Websockets不能被反向代理,因为客户端在报头后必须发送的8字节数据没有在Content-Length报头中发布,所以中间体在握手完成之前不会转发该数据。由于握手需要这8个字节来完成,因此握手永远不会完成并死锁,http://www.enotes.com/topic/WebSockets#Proxy_traversal。这并不是唯一的来源。更多的消息来源证实它们不能被反向代理。