Lors de la création d'applications Web dans Go, il peut être nécessaire de démarrer le navigateur une fois que le serveur a commencé à écouter relations. Cet article fournit une méthode simple pour répondre à cette exigence.
L'extrait de code fourni configure un serveur HTTP de base à l'aide de la bibliothèque httprouter. Cependant, il tente prématurément d'ouvrir le navigateur avant que le serveur ne soit complètement initialisé :
r := httprouter.New() r.GET("/test", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { fmt.Fprint(w, "Welcome!\n") }) http.ListenAndServe("localhost:3000", r) fmt.Println("ListenAndServe is blocking") open.RunWith("http://localhost:3000/test", "firefox")
Pour ouvrir le navigateur après que le serveur a commencé à écouter, modifiez le code comme suit :
l, err := net.Listen("tcp", "localhost:3000") if err != nil { log.Fatal(err) } // The browser can connect now because the listening socket is open. err = open.Start("http://localhost:3000/test") if err != nil { log.Println(err) } // Start the blocking server loop. log.Fatal(http.Serve(l, r))
Ce code révisé sépare les étapes d'ouverture de l'écouteur et de démarrage de la boucle du serveur. Il permet au navigateur de se connecter avant que l'appel http.Serve bloquant ne soit effectué. Ainsi, le navigateur s'ouvre une fois que le serveur a commencé à écouter avec succès.
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!