2016-09-06 65 views
0

我寫了一個簡單的websocket服務器/客戶端。 服務器是用C#(System.Net.WebSockes)編寫的,客戶端是javascript (儘管服務器技術是無關緊要的,因爲我已經用signalr測試過它,並且在websocket傳輸握手過程中得到了相同的錯誤)。 問題是:使用websockets時的奇怪行爲

1-在某些客戶端上,我可以輕鬆連接到服務器並且工作得很好。

2-一些其他客戶我握手 期間以及在這些客戶端得到一個錯誤代碼1006當我打開代理應用程序如psiphon是它可以連接到服務器。然而,它在大約6秒之後斷開。

我真的超級困惑,最後經過數小時的努力,我決定在這裏提出一個問題。 我不認爲它與代碼有關,但我仍然把它放在這裏。

var url = 'ws://' + location.host + '/socket'; 
    var socket = new WebSocket(url); 

更新1:我所接觸的系統管理員(託管公司),他們說這可能是因爲客戶的ISP的。如果是這種情況,我會很感激任何提示,以確定是否有某種代理服務器導致麻煩?

更新2:作爲@vtortola提到我創建了一個自簽名證書並添加到網站(IIS和Plesk)。有一些改善,但仍然得到斷開

在此先感謝..

+2

請參閱[這裏](https://en.wikipedia.org/wiki/Capitalization)它是'有線'還是'奇怪',順便說一句? – TaW

+0

都是測試客戶端在本地主機上? –

+0

我真的不認爲有人會根據您提供的信息告訴您任何有用的信息。 「對某些客戶而言」並不真正有幫助,但沒有人能夠發現「某些客戶」有什麼不同。 – jAndy

回答

1

它聞起來像代理問題給我。使用安全連接(wss://)並檢查它是否變得更好。基本上,如果你的某些客戶端在代理服務器後面,那麼WebSocket連接可能會以許多意想不到的方式行事。

How HTML5 Web Sockets Interact With Proxy Servers

+0

我已經創建了一個自簽名證書並安裝在網站上,發生了什麼事情是它現在通過握手和連接,但大約2秒後立即斷開連接。 – SHM

+1

如果它確實發生在其中的一小部分上,那麼它可能是某種代理查殺連接,因爲它認爲它們是半死的連接。還有一些設備認爲持續時間比平常長的HTTP連接只是某種故障。該代理可能在那些客戶ISP網絡,而不是在你的。 – vtortola

+0

謝謝,有沒有辦法可以跟蹤一些websocket數據包,並找出路由中哪臺服務器出了問題。例如使用「tracert」命令查找其間的所有服務器,然後ping單個服務器(使用websocket)來檢查它是否導致問題或不是? – SHM