Détection de l'initiation d'écoute du serveur HTTP
Lors de l'initialisation d'un serveur HTTP avec le package net/http, il peut être difficile de surveiller activement le serveur statut. Contrairement à la fonction ListenAndServe, qui s'exécute jusqu'à l'arrêt du serveur, il ne semble pas y avoir de mécanisme simple pour détecter la phase de démarrage et d'écoute du serveur.
Approche personnalisée
Donnée En l'absence de canal de notification explicite, une solution personnalisée est requise. En contournant la fonction d'assistance ListenAndServe, vous pouvez ouvrir manuellement un socket d'écoute. Une fois le socket établi, le serveur peut être démarré avec http.Serve, vous permettant de contrôler le processus de signalisation. Voici un extrait de code illustrant cette approche :
l, err := net.Listen("tcp", ":8080") if err != nil { // handle error } // Signal server's listening status. // Closing the done channel indicates server is listening. done := make(chan bool) go func() { err := http.Serve(l, rootHandler) if err != nil { // handle error } close(done) })() // Wait for the done channel to close, indicating the server is listening. <-done
Cette approche permet un contrôle explicite sur l'état d'écoute du serveur. En surveillant le canal terminé, vous pouvez être averti lorsque le serveur est prêt à accepter les connexions entrantes.
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!