Isu:
Kesukaran menyambung ke pelayan WebSocket yang dijalankan dalam bekas Docker apabila mengaksesnya dari luar bekas.
Kod Pelayan:
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... }
Fail Docker:
FROM golang:1.11.4-alpine3.8 ... (Build and expose port commands) ...
Gelagat Jangkaan:
Menyambung ke pelayan WebSocket dari luar bekas harus mencetak "disambungkan" pada sisi klien.
Ralat Sebenar:
Pelanggan panik dengan ralat: "panik: baca tcp [::1]:60328->[::1]:8000: baca: set semula sambungan oleh rakan sebaya."
Punca:
Pelayan sedang mendengar pada localhost (127.0.0.1) dalam bekas, yang tidak boleh diakses dari luar bekas.
Penyelesaian:
Untuk menyelesaikan isu ini, tukar alamat dengar pelayan dalam pelayan. pergi ke ":8000" dan bukannya "localhost:8000." Dengan cara ini, pelayan akan mendengar pada semua alamat IP bekas.
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... } // main() server := http.Server{Addr: ":8000"} ... (Rest of server setup) ...
Maklumat Tambahan:
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menyambung ke Pelayan WebSocket Saya Di Dalam Bekas Docker dari Luar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!