Isu: Kesukaran mewujudkan sambungan WebSocket daripada klien di luar bekas Docker ke pelayan dalam bekas.
Kod anda menggunakan http.Server{Addr: "localhost:8000"}, yang mengehadkan pelayan mendengar antara muka gelung balik (127.0.0.1) dalam bekas. Memandangkan pelanggan berada di luar bekas, ia tidak boleh menyambung ke alamat ini.
Penyelesaian:
Untuk menyelesaikan isu ini, nyatakan alamat mendengar pelayan sebagai http.Server {Addr: ":8000"}, yang mengarahkan pelayan untuk mendengar semua alamat IP yang tersedia dalam bekas.
Maklumat Tambahan:
Apabila port didedahkan dalam bekas Docker, Docker mencipta peraturan iptables untuk memajukan trafik dari mesin hos ke bekas. Peraturan ini memastikan bahawa permintaan mencapai alamat IP dan port yang betul dalam bekas. Anda boleh melihat peraturan ini menggunakan arahan:
iptables -n -L iptables -t nat -n -L
Dengan melaraskan alamat dengar, pelayan anda kini boleh menerima sambungan WebSocket daripada pelanggan di luar bekas Docker, membolehkan komunikasi antara mereka.
Atas ialah kandungan terperinci Mengapa Klien Saya Tidak Boleh Menyambung ke Pelayan WebSocket Saya Di Dalam Bekas Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!