当我查看net / http服务器接口时,没有看到一种明显的方式来通知并在http.Server启动并 开始 侦听时作出反应:
ListenAndServe(":8080", nil)
直到服务器真正关闭后,该函数才返回。我还查看了服务器类型,但似乎没有什么可以让我把握这一时机。某些功能或频道会很棒,但我看不到任何东西。
有什么方法可以让我检测到该事件,还是我只需要“熟睡”一下以伪造它?
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 }
如果信令步骤没有阻塞,则http.Serve将轻松消耗侦听套接字上的所有积压。