Go에서는 서버가 메인 스레드를 제어하기 때문에 서버보다 먼저 브라우저를 시작하는 전통적인 접근 방식은 효과적이지 않습니다. 향후 작업을 차단합니다. 이 문제를 해결하려면 보다 효율적인 접근 방식은 리스너를 열고 브라우저를 시작한 다음 서버 루프에 들어가는 것입니다.
package main import ( "fmt" "log" "net/http" "github.com/skratchdot/open-golang/open" "github.com/julienschmidt/httprouter" ) func main() { r := httprouter.New() r.GET("/test", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { fmt.Fprint(w, "Welcome!") }) l, err := net.Listen("tcp", "localhost:3000") if err != nil { log.Fatal(err) } err = open.Start("http://localhost:3000/test") if err != nil { log.Println(err) } http.Serve(l, r) log.Fatal(err) }
리스너 열기, 브라우저 시작 및 서버 루프를 분리하여 다음을 보장합니다. 서버가 수신 대기한 후 서버 루프가 시작되기 전에 브라우저가 열립니다. 이렇게 하면 브라우저가 서버에 연결할 수 있으므로 특정 브라우저 동작에 대한 폴링이나 의존이 필요하지 않습니다.
위 내용은 Go에서 서버 초기화 후 브라우저를 효율적으로 시작하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!