Heim > Artikel > Backend-Entwicklung > Warum kann ich von außen keine Verbindung zu meinem WebSocket-Server in einem Docker-Container herstellen?
Problem:
Schwierigkeit beim Herstellen einer Verbindung zu einem WebSocket-Server, der in einem Docker-Container ausgeführt wird, wenn Zugriff darauf von außerhalb des Containers.
Server Code:
// 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) ...
Erwartetes Verhalten:
Verbindung zum WebSocket herstellen Ein Server von außerhalb des Containers sollte auf dem Client „verbunden“ ausgeben Seite.
Tatsächlicher Fehler:
Der Client gerät in Panik mit dem Fehler: „Panic: read tcp [::1]:60328->[::1] :8000: lesen: Verbindung zurückgesetzt von peer."
Ursache:
Der Server lauscht auf localhost (127.0.0.1) innerhalb des Containers, auf den von außerhalb des Containers nicht zugegriffen werden kann.
Lösung:
Um dieses Problem zu beheben, ändern Sie die Abhöradresse des Servers in server.go zu „:8000“ anstelle von „localhost:8000“. Auf diese Weise überwacht der Server alle IP-Adressen des Containers.
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... } // main() server := http.Server{Addr: ":8000"} ... (Rest of server setup) ...
Zusätzliche Informationen:
Das obige ist der detaillierte Inhalt vonWarum kann ich von außen 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!