@MasterCopipaster

Как правильно организовать прием данных через WS?

Всем доброе время суток, мне необходимо написать асинхронный WS клиент для чтения данных в режиме реального времени, я для этой задачи выбрал boost — и удачно собрал вот этот пример клиента.
Собственно вопрос в том как организовать чтение данных, пример сейчас подключается к WS серверу, отправляет что то получает ответ и завершает работу.
Разъясните следующие вещи:
В комментариях к коду сказано следующие:
// Run the I/O service. The call will return when
    // the socket is closed.
    ioc.run();

И тут как то странно, почему ioc.run(); будет выводить данные только когда соединение закрыто? - или я что то не так понял, потому что это явный бред.

Через что мне сделать получение данных с WSта?
Я хочу получать строку с сервера и класть ее в переменную - каждый раз когда сервер присылает мне новые данные, по идее мне нужен какой то eventloop
Изрядно поковырявшись я так и не понял как это сделать, - Собственно прошу подсказать в какую сторону гуглить?
Может у кого то есть пример по работе WS клиента на boost?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
или я что то не так понял

Именно.
Вы выбрали асинихронный инструмент, не понимая как он работает.
ioc.run() - запускает цикл обработки асинхроных событий (event loop). Когда он завершается, то вы не сможете уже что-либо получать/передавать.
Ваша задача добавить нужный вам код в обработчики событий (функции on_xxx()). Как это правильно делать смотрите документацию по библиотеке и возможно другие примеры использования.

Я никогда не использовал boost.beast и WebSocket, но некоторый опыт асинхронного программирования есть, а принципы асинхронного программирования в любых библиотеках одни и те же.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы