使用 .Net ClientWebSocket 从 WebSocket 获取数据
Get Data from WebSocket using .Net ClientWebSocket
我需要从 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);
}
如果我尝试连接到任何其他网络套接字,代码运行良好...
与其他 websocket 的区别在于地址以“wss”而不是“ws”开头(认为这是因为安全连接)。
如果我使用像 Chrome 这样的浏览器进行测试,websocket 连接可以工作,但在 .Net 中不行,我可能必须添加一些 header 来模拟浏览器代理吗?
感谢支持
终于经过一番搜索,我发现了问题:我只需要将 headers 添加到 ClientWebSocket。
问题是 ClientWebSocket 没有提供添加特定方法的方法headers,我不得不强制使用 ClientWebSocket。
这个帖子对解决我的问题帮助很大:
Setting "User-Agent" HTTP header in ClientWebSocket
使用这个新版本的 ClientWebSocket 我能够添加 Headers。
我需要从 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);
}
如果我尝试连接到任何其他网络套接字,代码运行良好...
与其他 websocket 的区别在于地址以“wss”而不是“ws”开头(认为这是因为安全连接)。
如果我使用像 Chrome 这样的浏览器进行测试,websocket 连接可以工作,但在 .Net 中不行,我可能必须添加一些 header 来模拟浏览器代理吗?
感谢支持
终于经过一番搜索,我发现了问题:我只需要将 headers 添加到 ClientWebSocket。
问题是 ClientWebSocket 没有提供添加特定方法的方法headers,我不得不强制使用 ClientWebSocket。
这个帖子对解决我的问题帮助很大:
Setting "User-Agent" HTTP header in ClientWebSocket
使用这个新版本的 ClientWebSocket 我能够添加 Headers。