2016-12-28 70 views
0

我需要從WebSocket收集數據。使用.Net從WebSocket獲取數據ClientWebSocket

如果我嘗試測試與本網站WebSocket的:http://www.websocket.org/echo.html我可以連接並沒有問題發送消息,但是當我嘗試使用.NET Framework庫連接到網頁套接字我得到:

System.Net.WebException :內部服務器錯誤(500)。

我用來連接的代碼是這樣的:

 string uri = "wss://wss.xxx.xxx"; 
     ClientWebSocket webSocket = null; 
     try 
     { 
      webSocket = new ClientWebSocket(); 
      await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None); 
      await Task.WhenAll(Receive(webSocket), Send(webSocket)); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Exception: {0}", ex); 
     } 

如果我嘗試連接到任何其他網絡插座,代碼工作好...

與其他的WebSocket不同的是,地址以「wss」而不是「ws」(認爲它是因爲安全連接)開頭。

如果我使用類似Chrome的瀏覽器進行測試,websocket連接可以工作,但不能在.Net中,可能需要添加一些標題才能模擬瀏覽器代理?

謝謝支持

+0

我試過你的代碼與ws://echo.websocket.org它工作正常。 – Mehmet

+0

嗨Memmet,是的,它適用於ws://echo.websocket.org,但不適用於我必須使用的websocket。 – DarioN1

+0

嗨Memmet,是的,它適用於ws://echo.websocket.org,但不適用於我必須使用的websocket。 如果你檢查我的答案,現在我可以連接,我只需添加一些標題和握手作品... – DarioN1

回答

0

最後一些搜索後,我發現了問題:我不得不頭添加到ClientWebSocket。

問題是,ClientWebSocket不提供方法來添加特定的頭,我不得不作出強制的ClientWebSocket。

這個線程我有很大幫助解決我的問題:

Setting "User-Agent" HTTP header in ClientWebSocket

使用ClientWebSocket這個新版本,我能夠添加標題。