当 http.Server 开始侦听时收到通知

sjl*_*lee 6 go

当我查看 net/http 服务器接口时,我没有看到在 http.Server 启动并开始侦听时获得通知和反应的明显方法:

ListenAndServe(":8080", nil)
Run Code Online (Sandbox Code Playgroud)

在服务器实际关闭之前,该函数不会返回。我还查看了服务器类型,但似乎没有任何东西可以让我利用该时间。某些功能或频道本来会很棒,但我没有看到。

有什么方法可以让我检测到那个事件,还是让我只睡“足够”来伪造它?

Cer*_*món 7

ListenAndServe 是一个辅助函数,它打开一个侦听套接字,然后在该套接字上提供连接。直接在您的应用程序中编写代码以在套接字打开时发出信号:

l, err := net.Listen("tcp", ":8080")
if err != nil {
    // handle error
}

// Signal that server is open for business. 

if err := http.Serve(l, rootHandler); err != nil {
    // handle error
}
Run Code Online (Sandbox Code Playgroud)

如果信令步骤没有阻塞,那么 http.Serve 将很容易消耗侦听套接字上的任何积压。

相关问题:https : //stackoverflow.com/a/32742904/5728991