Dans Go, l'approche traditionnelle consistant à démarrer le navigateur avant le serveur est inefficace car le serveur prend le contrôle du thread principal et bloque les actions futures. Pour résoudre ce problème, une approche plus efficace consiste à ouvrir l'écouteur, à démarrer le navigateur, puis à entrer dans la boucle du serveur.
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) }
En séparant l'ouverture de l'écouteur, le démarrage du navigateur et la boucle du serveur, vous vous assurez que le navigateur est ouvert après l'écoute du serveur mais avant le démarrage de la boucle du serveur. Cela garantit que le navigateur peut se connecter au serveur, éliminant ainsi le besoin d'interrogation ou de dépendance à un comportement spécifique du navigateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!