问题描述
我使用的是来自 boost beast documentation for async websocket client 的示例。发送一些命令来订阅然后收听提要,直到手动终止(最好使用其他功能或其他功能)
不应用标准示例,因为它不提供响应或不提供永久提要。
需要访问 Poloniex Websocket API 作为参考。
有没有永久收听提要的例子?
解决方法
我们的想法是不要停止“倾听”(而倾听实际上只是意味着阅读)。
在同步代码中,您只需循环读取操作。
在异步代码中,您将其设为链。 Asio 中的 echo 示例显示了这一点(以多种方式)。
在此 async websocket example 中,您将更改 on_read
完成处理程序
void
on_read(
beast::error_code ec,std::size_t bytes_transferred)
{
boost::ignore_unused(bytes_transferred);
if(ec)
return fail(ec,"read");
// Close the WebSocket connection
ws_.async_close(websocket::close_code::normal,beast::bind_front_handler(
&session::on_close,shared_from_this()));
}
用更多的 async_close
替换 async_read
,例如
// Read a message into our buffer
ws_.async_read(
buffer_,beast::bind_front_handler(
&session::on_read,shared_from_this()));