как заставить сервер работать циклически С ++/boost

Я пытаюсь написать свой сервер REST API с использованием библиотеки boost, моя проблема в том, что я не понимаю, как заставить сервер работать циклически и не переставать работать после подключения одного пользователя, я уже перепробовал несколько способов, но не смог это реализовать

using namespace boost::asio;
namespace beast = boost::beast;
namespace http = beast::http;
using tcp = boost::asio::ip::tcp;

Server::Server(boost::asio::io_service& io_service, int port)
    : acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 
port)),
    socket_(io_service) {

    StartAccept();
}

void Server::StartAccept() {
    acceptor_.async_accept(socket_, [this](boost::system::error_code ec) {
        if (!ec) {
            std::cout << "Client connected" << std::endl;
        }
        else {
            std::cerr << "Client error: " << ec.message() << std::endl;
        }
    });
}

void Server::ReadRequest() {
    beast::http::async_read(socket_, buffer_, request_,
        [this](boost::system::error_code ec, size_t bytes_transferred) {
            if (!ec) {
               ProcessRequest();
        }
        else {
            std::cerr << "Error ReadRequest: " << ec.message() << std::endl;
        }
    });
}

void Server::ProcessRequest(){
    if (request_.method() == http::verb::get) {
        http::response<http::string_body> response(http::status::ok, request_.version());
        response.set(http::field::server, "Boost Beast Server");
        response.set(http::field::content_type, "text/plain");
        response.keep_alive(request_.keep_alive());
        response.body() = "Hello, World";
        response.prepare_payload();
    
        WriteResponse(response);
}
else {
    http::response<http::string_body> response(http::status::bad_request, request_.version());
    response.set(http::field::server, "Boost Beast Server");
    response.set(http::field::content_type, "text/plain");
    response.keep_alive(request_.keep_alive());
    response.body() = "Invalide request!";
    response.prepare_payload();
    
    WriteResponse(response);
     }
}

void 
 Server::WriteResponse(boost::beast::http::response<boost::beast::http::string_body>& 
response_){
    http::async_write(socket_, response_,
        [this](boost::system::error_code ec, size_t byte) {
            socket_.shutdown(tcp::socket::shutdown_send, ec);
            if (ec) {
                std::cerr << "Error WriteResponse: " << ec.message() << std::endl;
            }
        });
}

Ответы (0 шт):