我有一个cpprestsdk包,用于连接和流式传输来自某个端点的数据。
using namespace web;
using namespace web::websockets::client;
websocket_client clientbtcusdt;
clientbtcusdt.connect(std::wstring(L"wss://stream.binance.com:9443/ws/" + std::wstring(L"btcusdt") + L"@depth20@100ms")).wait();
clientbtcusdt.receive().then([](websocket_incoming_message in_msg)
{
return in_msg.extract_string();
}).then([&](std::string body)
{
Json::Value json;
std::string parsingError;
std::stringstream streamResponse(body);
Json::parseFromStream(Json::CharReaderBuilder(), streamResponse, &json, &parsingError);
std::cout << json << std::endl;
}).wait();
这将接收一条json
消息,然后关闭连接。
如何永久流式传输
如果我想通过将其包装成无限循环来永久地进行流式传输,然后想要很少这样的流,是否应该将每个无限循环包装成可调用的,并将线程附加到每个这样的套接字?
您应该使用websocket_callback_client而不是websocket_client。
请看这个:
有时,如果您需要从服务器接收大量消息,重复调用和处理每个任务可能会很乏味,而且容易出错。我们有另一个类,它允许为来自服务器的消息设置回调。下面是一个注册回调的简单示例:websocket_client::receive((websocket_callback_client
继续接收来自websocket 的消息