Ein Entwickler stößt auf Probleme beim Versuch, einen WebSocket-Server mithilfe von Docker zu containerisieren. Der Servercode schreibt mit „connected“ in eine neue Verbindung und funktioniert gut außerhalb des Containers, aber wenn er in einen Docker-Container platziert wird, gerät der Client aufgrund eines „Connection Reset“-Fehlers mit der Fehlermeldung „read tcp [::1] in Panik. :60328->[::1]:8000: gelesen: Verbindung vom Peer zurückgesetzt.“ Der Entwickler ist sich nicht sicher, welche Änderungen erforderlich sind, um eine WebSocket-Verbindung zum Server innerhalb des Containers herzustellen.
Um dieses Problem zu beheben, muss der Entwickler die Abhöradresse des Servers ändern . Anstatt „localhost:8000“ zu verwenden, was den Server darauf beschränkt, die IP-Adresse 127.0.0.1 innerhalb des Containers abzuhören, sollten sie diese in „:8000“ ändern.
Durch die Verwendung von „:8000“ als Abhöradresse: Der Server überwacht alle dem Container zugewiesenen IP-Adressen. Diese Änderung stellt sicher, dass bei der Weiterleitung des Datenverkehrs an den Container über die ihm zugewiesene IP-Adresse ein Überwachungsserver zur Verfügung steht, der die Verbindung akzeptiert.
Docker spielt dabei eine entscheidende Rolle Szenario, indem Sie iptables-Regeln erstellen, um den Datenverkehr vom Hostcomputer an den Container weiterzuleiten. Diese Regeln sind wichtig, damit der Client mit dem WebSocket-Server innerhalb des Containers kommunizieren kann. Standardmäßig überwachen Docker-Container ihre internen IP-Adressen, auf die vom Host-Computer aus nicht direkt zugegriffen werden kann. Die von Docker erstellten iptables-Regeln schließen diese Kommunikationslücke.
Um diese iptables-Regeln anzuzeigen, kann der Entwickler die folgenden Befehle verwenden:
iptables -n -L iptables -t nat -n -L
Indem er die erwähnte Änderung an der Listenadresse und vornimmt Wenn der Entwickler die Weiterleitung von Docker versteht, kann er erfolgreich eine WebSocket-Verbindung zum Server innerhalb des Docker-Containers herstellen, wodurch der Fehler „Verbindungszurücksetzung“ behoben wird und das erwartete Verhalten des Druckens „verbunden“ auf der Clientseite aktiviert wird.
Das obige ist der detaillierte Inhalt vonWarum kann mein WebSocket-Server bei Dockerisierung keine Verbindung herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!