我刚开始使用 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
任何帮助,将不胜感激。谢谢!