Получить данные из 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, я смог добавить заголовки.

Другие вопросы по тегам