2016-12-28 337 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这个新版本,我能够添加标题。