2011-12-28 72 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