1

我正在使用来自boost beast 文档的示例用于异步 websocket 客户端。发送一些命令来订阅然后收听提要,直到它被手动终止(最好使用其他功能或其他)

不应用标准示例,因为它要么没有响应,要么没有提供永久提要。

需要访问 Poloniex Websocket API 作为参考。

有没有永久收听饲料的例子?

4

1 回答 1

0

这个想法是不要停止“听”(听你真的只是意味着阅读)。

在同步代码中,您只需循环读取操作。

在异步代码中,您将其设为链。Asio 中的 echo 示例显示了这一点(以多种方式)。

在这个异步 websocket 示例中,您将更改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的 s代替

    // Read a message into our buffer
    ws_.async_read(
        buffer_,
        beast::bind_front_handler(
            &session::on_read,
            shared_from_this()));
于 2021-04-15T10:58:14.227 回答