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 中国語 Web サイトの他の関連記事を参照してください。