Go에서 HTTP 서버 수신 상태 감지
Go에서 HTTP 서버로 작업할 때 서버 상태를 모니터링해야 할 수도 있습니다. 특정 포트에서 수신 대기를 시작할 때. 주어진 질문에서 강조된 것처럼 표준 net/http 라이브러리는 이 이벤트를 추적하는 명시적인 옵션을 제공하지 않습니다.
이 상황에서는 청취 프로세스를 직접 관리하고 청취 상태를 알릴 수 있습니다.
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 }
이 접근 방식에서는 리스너를 생성한 다음 goroutine을 사용하여 연결을 수락하고 요청 처리를 시작하는 Serve 메서드를 처리합니다. 동시에 청취 상태를 알리는 채널(완료)을 생성합니다. 기본 고루틴은 서버가 지정된 포트에서 수신을 시작할 때 발생하는 채널이 닫힐 때까지 기다립니다.
이 메커니즘을 사용하면 서버가 성공적으로 수신을 시작한 후 적절한 조치를 취하거나 필요한 구성을 수행할 수 있습니다.
위 내용은 Go HTTP 서버가 특정 포트에서 수신 대기를 시작하는 시기를 어떻게 감지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!