Maison >développement back-end >Golang >Pourquoi mon client ne peut-il pas se connecter à mon serveur WebSocket dans un conteneur Docker ?

Pourquoi mon client ne peut-il pas se connecter à mon serveur WebSocket dans un conteneur Docker ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 22:26:02346parcourir

Why Can't My Client Connect to My WebSocket Server Inside a Docker Container?

Dépannage lors de la dockerisation d'un serveur WebSocket

Problème : Difficulté à établir une connexion WebSocket à partir d'un client extérieur à un conteneur Docker vers un serveur à l'intérieur du conteneur.

Votre code utilise http.Server{Addr: "localhost:8000"}, ce qui limite l'écoute du serveur à l'interface de bouclage (127.0.0.1) dans le conteneur. Le client étant externe au conteneur, il ne peut pas se connecter à cette adresse.

Solution :

Pour résoudre ce problème, spécifiez l'adresse d'écoute du serveur comme http.Server {Addr : ":8000"}, qui demande au serveur d'écouter toutes les adresses IP disponibles dans le conteneur.

Informations supplémentaires :

Lorsque les ports sont exposés dans un conteneur Docker, Docker crée des règles iptables pour transférer le trafic de la machine hôte vers le conteneur. Ces règles garantissent que les requêtes atteignent l'adresse IP et le port corrects dans le conteneur. Vous pouvez afficher ces règles à l'aide des commandes :

iptables -n -L
iptables -t nat -n -L

En ajustant l'adresse d'écoute, votre serveur peut désormais accepter les connexions WebSocket des clients extérieurs au conteneur Docker, permettant ainsi la communication entre eux.

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