Problème :
Difficulté de connexion à un serveur WebSocket exécuté dans un conteneur Docker lorsque y accéder depuis l'extérieur du conteneur.
Code du serveur :
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... }
Dockerfile :
FROM golang:1.11.4-alpine3.8 ... (Build and expose port commands) ...
Comportement attendu :
La connexion au serveur WebSocket depuis l'extérieur du conteneur doit afficher "connecté" côté client.
Erreur réelle :
Le client panique avec l'erreur : "panic: read tcp [::1]:60328->[::1]:8000: read: connection reset by peer."
Cause :
Le serveur écoute sur localhost (127.0.0.1) dans le conteneur, qui n'est pas accessible depuis l'extérieur du conteneur.
Solution :
Pour résoudre ce problème, modifiez l'adresse d'écoute du serveur dans server.go en ":8000" au lieu de "localhost:8000". De cette façon, le serveur écoutera toutes les adresses IP du conteneur.
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... } // main() server := http.Server{Addr: ":8000"} ... (Rest of server setup) ...
Informations supplémentaires :
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!