Problem: Schwierigkeiten beim Herstellen einer WebSocket-Verbindung von einem Client außerhalb eines Docker-Containers zu einem Server innerhalb des Containers.
Ihr Code verwendet http.Server{Addr: "localhost:8000"}, was das Abhören des Servers auf die Loopback-Schnittstelle (127.0.0.1) innerhalb des Containers einschränkt. Da sich der Client außerhalb des Containers befindet, kann er keine Verbindung zu dieser Adresse herstellen.
Lösung:
Um dieses Problem zu beheben, geben Sie die Server-Abhöradresse als http.Server an {Addr: „:8000“}, die den Server anweist, alle verfügbaren IP-Adressen im Container abzuhören.
Zusätzliche Informationen:
Wenn Ports verfügbar gemacht werden Als Docker-Container erstellt Docker iptables-Regeln, um den Datenverkehr vom Host-Computer an den Container weiterzuleiten. Diese Regeln stellen sicher, dass Anfragen die richtige IP-Adresse und den richtigen Port innerhalb des Containers erreichen. Sie können diese Regeln mit den folgenden Befehlen anzeigen:
iptables -n -L iptables -t nat -n -L
Durch Anpassen der Listenadresse kann Ihr Server jetzt WebSocket-Verbindungen von Clients außerhalb des Docker-Containers akzeptieren und so die Kommunikation zwischen ihnen ermöglichen.
Das obige ist der detaillierte Inhalt vonWarum kann mein Client keine Verbindung zu meinem WebSocket-Server in einem Docker-Container herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!