everyone! I'm trying to use Binance websocket API from https://binance-docs.github.io/apidocs/spot/en/#websocket-market-streams I want to make it via boost::beast c++ My approach made from docs https://www.boost.org/doc/libs/1_70_0/libs/beast/example/websocket/client/sync-ssl/websocket_client_sync_ssl.cpp
#include <boost/beast/core.hpp>
#include <boost/beast/websocket.hpp>
#include <boost/beast/ssl.hpp>
#include <boost/beast/websocket/ssl.hpp>
#include <boost/asio/connect.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/beast/core/stream_traits.hpp>
#include <boost/asio/ssl.hpp>
#include <boost/asio/buffers_iterator.hpp>
#include <iostream>
#include <string>
namespace beast = boost::beast;
namespace http = beast::http;
namespace websocket = beast::websocket;
namespace net = boost::asio;
namespace ssl = boost::asio::ssl;
using tcp = boost::asio::ip::tcp;
int main() {
const std::string host = "stream.binance.com";
const std::string port = "9443";
try {
boost::asio::io_context io_ctx;
ssl::context ssl_ctx{ssl::context::tlsv12_client};
tcp::resolver resolver(io_ctx);
websocket::stream<beast::ssl_stream<tcp::socket> > ws(io_ctx, ssl_ctx);
auto const results = resolver.resolve(host, port);
net::connect(ws.next_layer().next_layer(), results.begin(), results.end());
ws.next_layer().handshake(ssl::stream_base::client);
ws.set_option(websocket::stream_base::decorator(
[](websocket::request_type& req)
{
req.set(http::field::user_agent,
std::string(BOOST_BEAST_VERSION_STRING) +
" websocket-client-coro");
}));
ws.handshake(host, "/ws/btcusdt@miniTicker/ethusdt@miniTicker");
beast::flat_buffer buffer;
auto const rpcJson = R"({"method":"UNSUBSCRIBE", "params": ["btcusdt@miniTicker", "ethusdt@miniTicker"], "id":1})";
ws.write(net::buffer(std::string(rpcJson)));
ws.close(websocket::close_code::normal); // HERE stream truncated
std::cout << "Everything finished fine" << std::endl;
}
catch(std::exception const& e) {
std::cerr << "Error: " << e.what() << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
I got system error - stream truncated, from line
ws.close(websocket::close_code::normal); // HERE stream truncated
Could somebody help me?