Mengesan Status Mendengar Pelayan HTTP dalam Go
Apabila bekerja dengan pelayan HTTP dalam Go, mungkin perlu memantau status pelayan, khususnya apabila ia mula mendengar pada port tertentu. Seperti yang ditonjolkan oleh soalan yang diberikan, pustaka net/http standard tidak menawarkan pilihan yang jelas untuk menjejaki acara ini.
Dalam situasi ini, anda boleh mengurus secara langsung proses mendengar dan memberi isyarat kepada status pendengaran:
package main import ( "log" "net/http" ) func main() { listener, err := net.Listen("tcp", ":8080") if err != nil { log.Fatal(err) } // Signal that the server is open for business. done := make(chan struct{}) go func() { defer close(done) log.Println("Server is now listening on port :8080") if err := http.Serve(listener, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})); err != nil { log.Fatal(err) } }() // Wait for the "done" channel to be closed, indicating that the server has started listening. <-done }
Dalam pendekatan ini, anda mencipta pendengar dan kemudian menggunakan goroutine untuk mengendalikan kaedah Serve, yang menerima sambungan dan mula melayani permintaan. Pada masa yang sama, anda mencipta saluran (selesai) untuk memberi isyarat kepada status mendengar. Gorutin utama menunggu saluran ditutup, yang berlaku apabila pelayan telah mula mendengar pada port yang ditentukan.
Mekanisme ini membolehkan anda mengambil tindakan yang sesuai atau melakukan sebarang konfigurasi yang diperlukan setelah pelayan berjaya mula mendengar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Apabila Pelayan HTTP Go Mula Mendengar pada Port Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!