Heim >Backend-Entwicklung >Golang >Wie dockerisiere ich einen WebSocket-Server, wenn die Verbindung durch einen Peer zurückgesetzt wird?
Möglicherweise treten beim Containerisieren eines WebSocket-Servers in Docker Schwierigkeiten auf. Dieser Artikel enthält Anleitungen zur Lösung dieses Problems.
Szenario:
Sie haben einen WebSocket-Servercode (server.go) und einen Client (client.go). Das Ausführen dieser Dateien außerhalb des Docker-Containers funktioniert problemlos. Nach der Containerisierung des Servers führt die Verbindung zu ihm von außerhalb des Containers jedoch zu einem Fehler:
panic: read tcp [::1]:60328->[::1]:8000: read: connection reset by peer
Ursache:
Das Problem liegt in der Server-Abhöradresse . Standardmäßig lauscht der Server auf localhost (127.0.0.1). Dies ist in Ordnung, wenn es außerhalb des Containers ausgeführt wird, aber innerhalb des Containers ist diese Adresse nicht zugänglich.
Lösung:
Um dieses Problem zu beheben, ändern Sie die Abhöradresse auf 0.0 .0.0:8000, was den Server anweist, alle IP-Adressen seines Containers abzuhören.
server := http.Server{Addr: ":8000"}
Erklärung:
Durch Offenlegung eines Ports in einem Docker-Container ( B. -p 8000:8000), erstellt Docker iptables-Regeln, um Datenverkehr an die IP-Adresse des Containers weiterzuleiten. Durch das Abhören von 0.0.0.0:8000 stellt der Server sicher, dass er Verbindungen akzeptiert, die an die IP-Adresse seines Containers weitergeleitet werden.
Das obige ist der detaillierte Inhalt vonWie dockerisiere ich einen WebSocket-Server, wenn die Verbindung durch einen Peer zurückgesetzt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!