我正在使用boost-beast库进行websocket连接。
您可以引用this example以了解,了解发生了什么。我使用了相同的示例,但是更改了一些内容:

  • on_handshake(beast::error_code ec)分为三个函数A(beast::error_code ec)B(beast::error_code ec)C(beast::error_code ec)
  • B()发送二进制数据,而A()C()正在发送文本。
  • A()调用B()作为回调,而B()调用C()作为回调。

  • 现在,我被困在要执行此操作的位置:
    void session::A(beast::error_code ec) {
        if (ec)
            return (fail(ec, "handshake"));
    
        ws_.async_write(net::buffer(SOMETEXT),bind(&session::B, shared_from_this(), placeholders::_1));
    
    }
    void session::B(beast::error_code ec) {
        if (ec)
            return (fail(ec, "A_FAILED"));
    
        if(condition1) {
            ws_.binary(true);
            ws_.async_write(net::buffer(SOMEBINARY),bind(&session::C, shared_from_this(), placeholders::_1));
        } else {
            session::on_write(ec,<WHAT SHOULD I WRITE HERE>);
        }
    
    }
    void session::C(beast::error_code ec) {
        if (ec)
            return (fail(ec, "B_FAILED"));
    
        ws_.binary(false);
    
        ws_.async_write(net::buffer(SOMETEXT),bind(&session::on_write, shared_from_this(), placeholders::_1, placeholders::_2));
    
    }
    

    这是阅读函数:
    void
    on_write(
        beast::error_code ec,
        std::size_t bytes_transferred)
    {
        boost::ignore_unused(bytes_transferred);
    
        if(ec)
            return fail(ec, "write");
    
        // Read a message into our buffer
        ws_.async_read(
            buffer_,
            std::bind(
                &session::on_read,
                shared_from_this(),
                std::placeholders::_1,
                std::placeholders::_2));
    }
    

    问题:-请在此处检查函数B()和我的问题。任何建议或答案表示赞赏。

    最佳答案

    您可以在参数中放入0并将其标记为未使用

    例如session::on_write(ec, 0 /* field unused */);

    09-08 10:14