In Go ist der traditionelle Ansatz, den Browser vor dem Server zu starten, wirkungslos, da der Server die Kontrolle über den Hauptthread übernimmt und blockiert zukünftige Aktionen. Um dieses Problem zu lösen, besteht ein effizienterer Ansatz darin, den Listener zu öffnen, den Browser zu starten und dann in die Serverschleife einzutreten.
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) }
Durch die Trennung von Listener-Öffnung, Browserstart und Serverschleife stellen Sie dies sicher Der Browser wird geöffnet, nachdem der Server lauscht, aber bevor die Serverschleife beginnt. Dies garantiert, dass der Browser eine Verbindung zum Server herstellen kann, sodass keine Abfragen erforderlich sind oder sich auf ein bestimmtes Browserverhalten verlassen muss.
Das obige ist der detaillierte Inhalt vonWie starte ich einen Browser nach der Serverinitialisierung in Go effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!