Maison >développement back-end >Golang >Comment puis-je détecter quand mon serveur Go net/http commence à écouter ?

Comment puis-je détecter quand mon serveur Go net/http commence à écouter ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 17:15:15945parcourir

How Can I Detect When My Go net/http Server Starts Listening?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn