@Quttar72
Изучаю asp.net core mvc

Почему клиент websocket на c# не получает данные?

Есть очень хорошая утилита под названием ttyd, которая позволяет запустить консольное приложение на вашем компьютере и выводить эту консоль в браузере.

После запуска утилита запускает http веб-сервер на заданном порту и при обращении к localhost отрывается сайт с веб-приложением, которое подключается с помощью веб-сокетов к адресу localhost:<порт>/ws, и уже с помощью них идет общение между веб-приложением и агентом ttyd, запущенным на компьютере.

Я хочу сделать, чтобы клиентом было не веб-приложение (JS), а программа на c#. Я изучил с помощью инструментов chrome, какие данные отправляет веб-приложение, перед получением данных выводимых в консоль. Это всего лишь строка: {"AuthToken":"","columns":211,"rows":46} и попробовал повторить те же действия в клиенте на c#. Но по какой-то причине, мне не возвращаются ни какие данные от ttyd.

Сравнивая данные выводимые ttyd в его консоль в самой ОС, видно, что он даже не создает процесс при обращении из моего клиента.

Я пробовал разные библиотеки для веб-сокетов на c#, так-же использовал postman с копированием всех заголовков, которые отправляет оригинальное веб-приложение агенту ttyd, но это ничего не меняет. То есть ttyd, что-то принципиально мешает, как будто мой веб-клиент не делает что-то, что делает браузер.

Вот код который я использую с пакетом Websocket.Client
var exitEvent = new ManualResetEvent(false);
var url = new Uri("ws://localhost:7681/ws");

using (var client = new WebsocketClient(url))
{
    client.ReconnectTimeout = TimeSpan.FromSeconds(30);
    client.ReconnectionHappened.Subscribe(info =>
        Console.WriteLine($"Reconnection happened, type: {info.Type}"));

    client.MessageReceived.Subscribe(msg => Console.WriteLine($"Message received: {msg}"));
    client.Start();

    Task.Run(() => client.Send("{\"AuthToken\":\"\",\"columns\":211,\"rows\":46}"));

    exitEvent.WaitOne();
}


У меня совсем нет идей даже в какую сторону можно копать, есть ли у вас предположения, какое действие, которое делает браузер я пропускаю в моем клиенте на c# ?
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Quttar72 Автор вопроса
Изучаю asp.net core mvc
Оказывается я не все заголовки скопировал. Фактически не хватало только одного заголовка Sec-WebSocket-Protocol со значением tty
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы