// Start the asynchronous operation
 void
 run()
 {
     // Accept the websocket handshake
     ws_.async_accept(
         boost::asio::bind_executor(
             strand_,
             std::bind(
                 &session::on_accept,
                 shared_from_this(),
                 std::placeholders::_1)));
 }
    void
    on_handshake(boost::system::error_code ec)
    {
        if(ec)
            return fail(ec, "handshake");

        // Accept the websocket handshake
        ws_.async_accept(
            boost::asio::bind_executor(
                strand_,
                std::bind(
                    &session::on_accept,
                    shared_from_this(),
                    std::placeholders::_1)));
    }