2012-09-20 48 views
3

使用socket.io,端口843似乎給防火牆等問題最少,因爲閃存使用該端口。如何檢查客戶端是否可以通過端口843連接?

但是,許多網絡阻止端口843,所以它們根本無法連接。

我有一個負載均衡器設置,可以從端口重定向HTTP流量80到所以那些這樣的人,但我的問題是,我想不出如何測試是否有人端口被封鎖與否。

任何想法?

或者,如果我可以更改socket.io的XHR方法總是使用替代連接url,這可能是最理想的。我更厭倦了做任何有超時的測試,因爲這會延長連接的時間。在websocket連接嘗試超時後更改某些內容是理想的選擇。

我在想什麼是..

var socket = io.connect('http://example.com:843', {'connect timeout':5000}); 

socket.on('connect_failed', function(){ 
    // change socket to connect to port 80 
} 

,但我不知道我怎麼會在這一點上更改連接的URL。

回答

0

未經測試,但不會重新初始化套接字到端口80工作?

var socket = io.connect('http://example.com:843', {'connect timeout':5000}); 

socket.on('connect_failed', function(){ 
    // change socket to connect to port 80 
    socket = io.connect('http://example.com:80', {'connect timeout':5000}); 
} 
+0

這正是我最終嘗試的。我無法分辨目前它的實際運作情況。有些人仍然說有問題。另外,對於某些人來說,端口80方法可能是因爲它正在通過負載平衡器進行XHR輪詢,因此會斷開很多連接。它始終連接到:843用於websockets和80用於xhr是理想的。 – sadtaco

+0

@sadtaco你必須在本地進行測試,以查看它是否正常工作。嘗試用虛擬盒複製您的生產設置...這是您實際能夠測試,調試和部署A級軟件的唯一方法... – Frankie