Dans Go, il est possible de rencontrer une situation dans laquelle vous devez démarrer le navigateur après que le serveur a commencé à écouter. Cet article propose une solution pour relever ce défi efficacement.
Le code modifié suit un processus en trois étapes :
import ( // Standard library packages "fmt" "log" "net" "net/http" // Third party packages "github.com/skratchdot/open-golang/open" "github.com/julienschmidt/httprouter" ) func main() { // Instantiate a new router r := httprouter.New() // Add a handler on /test r.GET("/test", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { // Simply write some test data for now fmt.Fprint(w, "Welcome!\n") }) // Open a TCP listener on port 3000 l, err := net.Listen("tcp", "localhost:3000") if err != nil { log.Fatal(err) } // Start the browser to connect to the server err = open.Start("http://localhost:3000/test") if err != nil { log.Println(err) } // Start the blocking server loop log.Fatal(http.Serve(l, r)) }
Cette approche garantit que le navigateur se connecte avant que le serveur n'entre dans la boucle de blocage dans http.Serve. En séparant les étapes d'écoute et d'initiation de la boucle du serveur, il permet le contrôle du démarrage du navigateur. Le navigateur peut désormais se connecter car le socket d'écoute est ouvert.
Il est important de noter que l'utilisation de ListenAndServe ignore directement l'étape d'ouverture du socket, ce qui fait que le navigateur ne se connecte qu'après le démarrage du serveur. écoute. En divisant ces étapes, vous obtenez un meilleur contrôle sur le démarrage du navigateur et pouvez vous assurer qu'il se connecte au moment souhaité.
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!