Heim >Backend-Entwicklung >Golang >Wie dockerisiere ich einen WebSocket-Server, wenn die Verbindung durch einen Peer zurückgesetzt wird?

Wie dockerisiere ich einen WebSocket-Server, wenn die Verbindung durch einen Peer zurückgesetzt wird?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-07 08:55:03630Durchsuche

How to Dockerize a WebSocket Server When Facing

Dockerisieren eines WebSocket-Servers

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn