检测 HTTP 服务器监听启动
使用 net/http 包初始化 HTTP 服务器时,主动监控服务器的监听可能具有挑战性地位。与一直执行到服务器关闭为止的 ListenAndServe 函数不同,似乎没有直接的机制来检测服务器的启动和侦听阶段。
自定义方法
给定由于缺乏明确的通知渠道,需要定制解决方案。通过绕过 ListenAndServe 辅助函数,您可以手动打开侦听套接字。一旦建立了套接字,就可以使用 http.Serve 启动服务器,从而使您能够控制信令过程。下面是演示此方法的代码片段:
l, err := net.Listen("tcp", ":8080") if err != nil { // handle error } // Signal server's listening status. // Closing the done channel indicates server is listening. done := make(chan bool) go func() { err := http.Serve(l, rootHandler) if err != nil { // handle error } close(done) })() // Wait for the done channel to close, indicating the server is listening. <-done
此方法允许显式控制服务器的侦听状态。通过监视完成的通道,您可以在服务器准备好接受传入连接时收到通知。
以上是如何检测我的 Go net/http 服务器何时开始监听?的详细内容。更多信息请关注PHP中文网其他相关文章!