#c #boost #websocket #boost-asio #boost-beast
#c #повышение #websocket #boost-asio #boost-зверь
Вопрос:
Проблема:
Я пытаюсь написать веб-сокет на C с помощью Boost.Зверь. Websocket необходим для взаимодействия с binary.com API (примеры кода на разных языках — https://developers.binary.com/demos ). Но в строке «ws.read (buffer);» я получаю сообщение об ошибке «поток усечен».
Как воспроизвести:
-
Программный код — Boost.Пример Beast SSL-клиента WebSocket, синхронный — https://github.com/boostorg/beast/blob/develop/example/websocket/client/sync-ssl/websocket_client_sync_ssl.cpp .
-
Корневые сертификаты.hpp — необходимы для программного кода, вы можете взять его отсюда — https://github.com/boostorg/beast/blob/develop/example/common/root_certificates.hpp .
-
Не забудьте изменить верхнюю строку в программном коде, эта строка
#include "example/common/root_certificates.hpp
. Если вы разместили свой файл root_certificates.hpp с шага 2 в другое место, убедитесь, что ваш код может #включить его. -
В коде программы с шага 1 поместите этот код:
argc = 4;
argv[0] = "websocket-client-sync";
argv[1] = "ws.binaryws.com";
argv[2] = "443";
argv[3] = "{"ticks":"R_100"}";
auto target = "/websockets/v3?app_id=1089";
- В программном коде с шага 1 замените
ws.handshake(host, "/");
наws.handshake(host, target);
Что я пытаюсь получить в результате:
Вы можете увидеть, перейдя по этой ссылке — https://www.websocket.org/echo.html , в поле «Местоположение:» введите wss://ws.binaryws.com/websockets/v3?app_id=1089
и в поле «Сообщение:» введите {"ticks":"R_100"}
. А затем нажмите «Подключиться» и «Отправить».