首頁 >後端開發 >Golang >如何偵測我的 Go net/http 伺服器何時開始監聽?

如何偵測我的 Go net/http 伺服器何時開始監聽?

Linda Hamilton
Linda Hamilton原創
2024-12-06 17:15:15942瀏覽

How Can I Detect When My Go net/http Server Starts Listening?

偵測 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn