2011-12-28 105 views
0

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

  • HAProxy的1.4.18
  • 节点0.6.5
  • socket.io 0.8.7

HAProxy的配置(我已经尝试了许多越来越许多选择):

网络插座在工作:

  • 的Safari 5(Windows)中
  • 的Chrome 11(Linux)的
+0

我从等式中删除了haproxy,并且socket.io完美地工作,所以我必须在我的haproxy配置中做错了事,或者出于某种原因,两者不能很好地一起玩。 – user1120155 2011-12-28 23:35:35

+0

如果我在socket.io切换协议之前停止haproxy,那么连接web套接字消息将发送到客户端。我现在使用[link](http://stackoverflow.com/questions/8627070/a-good-solution-for-a-websocket-socket-io-server-ive-tried-nginx-node-etc)进行配置。 – user1120155 2011-12-29 20:27:01

+0

我花了一段时间尝试获得正确的haproxy配置。在我的情况下,我想要web和flash套接字通过,但没有其他传输。我也想在haproxy终止ssl。已经有一段时间了,你可能已经解决了这个问题。然而,我在博客上谈到了我的解决方案:http://blog.carbonfive.com/2013/05/02/using-haproxy-with-socket-io-and-ssl/ Cheers, Christian – 2013-05-21 16:37:14

回答

-3

的WebSockets不能被反向代理,因为客户端在头部不是广告后必须发送8个字节的数据在内容长度标题中进行了转换,所以在握手完成之前,中间体不会转发该数据。由于握手需要这8个字节才能完成,所以握手永远不会完成并造成死锁,http://www.enotes.com/topic/WebSockets#Proxy_traversal。这不是唯一的来源。更多来源证实它们不能被反向代理。

+1

这一点完全错了,到与HTTP不兼容的初始websocket草案。 WebSocket *可以被反向代理,因为它变成了HTTP兼容的。 – 2012-05-23 22:20:51