Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Klien Saya Tidak Boleh Menyambung ke Pelayan WebSocket Saya Di Dalam Bekas Docker?

Mengapa Klien Saya Tidak Boleh Menyambung ke Pelayan WebSocket Saya Di Dalam Bekas Docker?

Susan Sarandon
Susan Sarandonasal
2024-11-06 22:26:02262semak imbas

Why Can't My Client Connect to My WebSocket Server Inside a Docker Container?

Menyelesaikan Masalah Menyangkut Pelayan WebSocket

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn