在 Hyper 中,是否有一种方法可以在服务器成功启动后立即运行某种形式的处理程序函数,该函数可用于各种目的,例如打印服务器已成功初始化的日志,甚至通知其他服务服务器已准备好接受请求。
我最初认为使用 .map
函数会在服务器初始化时执行,但当服务器启动或运行时,该闭包中不会执行任何操作,请参阅下面的代码片段。
// Build server
let server = Server::builder(HyperAcceptor {
acceptor: Box::pin(incoming_tls_stream),
}).serve(service);
// Run the future, keep going until an error occurs.
println!("[https-server]: Starting to serve on https://{}.", addr);
server
.await
.map(|v| {
println!("STARTED SERVER!"); // This never executes unfortunately
})
.map_err(|e| {
eprintln!("[https-server]: error: {:?}", e);
})
.unwrap();
我正在尝试运行一个集成测试,一旦服务器初始化,它就会向不同线程中的通道接收器传输一条消息,HTTPS 客户端可以开始发送消息。问题是,我无法确定服务器何时成功初始化并开始运行。似乎没有有效的入口点。