我需要从WebSocket收集数据。
如果我尝试使用此站点测试websocket:http://www.websocket.org/echo.html我可以毫无问题地连接并发送消息,但当我尝试使用.Net Framework库连接到websocket时,我得到:
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);
}
如果我尝试连接到任何其他Web套接字,代码运行良好......
与其他websocket的不同之处在于地址以" wss "开头。而不是" ws " (想想因为安全连接)。
如果我使用像Chrome这样的浏览器测试websocket连接是否有效,但是在.Net中,可能是我必须添加一些标头才能模拟浏览器代理?
感谢支持
答案 0 :(得分:0)
最后经过一些搜索我发现了问题:我只需要向ClientWebSocket添加标题。
问题是ClientWebSocket没有提供添加特定标头的方法,我不得不使用ClientWebSocket。
这个帖子帮助我解决了我的问题:
Setting "User-Agent" HTTP header in ClientWebSocket
使用这个新版本的ClientWebSocket我可以添加标题。