1

我刚开始使用 libnghttp2_asio 库并运行链接中提到的示例客户端和服务器。但是,尽管发送了后续请求,但在初始失败后我无法连接到服务器,即,我想知道如果服务器没有响应或服务器已关闭,如何在一段时间内发出后续请求第一次尝试。

sess.on_error所以,我尝试在客户端代码的回调中添加这段代码

sess.on_error([](const boost::system::error_code &ec){
    std::cerr << " error : " << ec.message() << std::endl;
    boost::asio::io_service io_service;
    int num_retries = 100;
    for(int  i = 0; i < num_retries; i++){
        this_thread::sleep_for(std::chrono::milliseconds(1000));
        cout << "retry attempt "<< i+1 << endl;
        session sess(io_service, "localhost", "3000");
   }
});

尽管这样做了,我发现sess.on_connect在初始失败后没有被调用,即为了测试这一点,我首先运行客户端而不启动服务器,但是后来,即使在启动服务器之后,连接也没有建立。

error: Connection refused
retry attempt 1
retry attempt 2
retry attempt 3
retry attempt 4
retry attempt 5
retry attempt 6
...
retry attempt 100

任何帮助,将不胜感激。谢谢!

4

0 回答 0