Maison  >  Article  >  développement back-end  >  interface de débogage golang fermée

interface de débogage golang fermée

PHPz
PHPzoriginal
2023-05-13 11:23:07475parcourir

J'ai récemment rencontré un problème étrange dans mon projet, c'est-à-dire que lors de l'utilisation de Golang pour déboguer l'interface, l'interface se fermait automatiquement après un certain temps. Cela nous apporte beaucoup de désagréments car nous devons constamment redémarrer l'interface pour continuer le débogage. Dans cet article, je partagerai ma solution.

Tout d'abord, j'ai tracé le package http dans la bibliothèque standard de Golang et j'ai découvert qu'essentiellement le type http.Server est la base de tous les serveurs HTTP. J'ai essayé d'utiliser ce type pour démarrer mon serveur HTTP et j'ai résolu le problème grâce à une compréhension approfondie du débogage. Au cours du processus, j’ai découvert quelque chose d’intéressant.

Avant que http.Server ne commence à traiter la requête, il utilise net.Listen pour stocker une référence à l'écouteur HTTP. Ensuite, en instanciant l'écouteur HTTP, vous pouvez commencer à accepter de nouvelles requêtes HTTP. Cela ressemble à ceci :

l, err := net.Listen("tcp", ":8080")

if err != nil {

log.Fatal(err)

}

s := &http.Server{}

// Commencer le traitement des requêtes

s.Serve(l)

Après avoir su cela, je me suis tourné vers certaines bibliothèques tierces pour voir leur implémentation de code. Nous avons utilisé certaines bibliothèques telles que gorilla mux et avons constaté qu'elles n'utilisent pas la méthode ci-dessus pour créer des services HTTP, mais utilisent la fonction http.ListenAndServe (je pense que c'est ainsi que beaucoup de gens l'utilisent), comme suit :

http.ListenAndServe (" :8080", nul)

Le deuxième paramètre est la fonction de gestionnaire de route que nous avons écrite (ou tout autre type qui implémente l'interface Handler).

http.ListenAndServe fonctionne de la même manière que nous initialisons un écouteur HTTP via net.Listen et le démarrons en utilisant http.Server.Serve. Cependant, c’est plus simple et peut être réalisé en une seule fois.

Quand j'ai remplacé cela, tout a commencé à fonctionner correctement. L'interface ne se ferme pas automatiquement, je peux définir des points d'arrêt dans le code, recharger ou accéder à l'interface car elle est toujours en écoute sur le port. En fait, je pense que http.ListenAndServe devrait être utilisé comme méthode normale de démarrage du serveur HTTP.

Pour résumer, si vous rencontrez ce problème d'arrêt automatique de l'interface lors de l'utilisation de golang, il est recommandé d'essayer d'utiliser la fonction http.ListenAndServe pour démarrer le serveur HTTP. Cela peut être une solution efficace. Grâce à une compréhension approfondie de la bibliothèque standard de Golang et des bibliothèques tierces, j'espère que cela pourra vous aider à mieux comprendre le fonctionnement de Golang.

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