Получить данные из WebSocket, используя.Net 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, соединение через веб-сокет работает, но не в.Net, может, мне придется добавить какой-нибудь заголовок для имитации агента браузера?
Благодаря поддержке
1 ответ
Наконец, после некоторого поиска я обнаружил проблему: мне просто нужно было добавить заголовки в ClientWebSocket.
Проблема заключается в том, что ClientWebSocket не предоставляет методы для добавления определенных заголовков, и мне пришлось применить силу ClientWebSocket.
Эта тема очень помогает мне решить мою проблему:
Настройка HTTP-заголовка "Пользователь-Агент" в ClientWebSocket
Используя эту новую версию ClientWebSocket, я смог добавить заголовки.