Rumah > Artikel > pembangunan bahagian belakang > Mengapa Pelayan WebSocket Saya Gagal Disambungkan Apabila Dilabuhkan?
Seorang pembangun menghadapi isu semasa cuba menyimpan pelayan WebSocket menggunakan Docker. Kod pelayan menulis kepada sambungan baharu dengan "disambungkan" dan berfungsi dengan baik di luar bekas, tetapi apabila diletakkan di dalam bekas Docker, pelanggan menjadi panik kerana ralat "set semula sambungan" dengan mesej ralat "baca tcp [::1] :60328->[::1]:8000: baca: sambungan ditetapkan semula oleh rakan sebaya." Pembangun tidak pasti perubahan yang diperlukan untuk mewujudkan sambungan WebSocket ke pelayan dalam bekas.
Untuk menangani isu ini, pembangun perlu mengubah suai alamat mendengar pelayan . Daripada menggunakan "localhost:8000," yang mengehadkan pelayan untuk mendengar pada alamat IP 127.0.0.1 dalam bekas, mereka harus menukarnya kepada ":8000."
Dengan menggunakan ":8000" sebagai mendengar alamat, pelayan akan mendengar pada semua alamat IP yang diberikan kepada bekas. Pengubahsuaian ini memastikan bahawa apabila trafik dimajukan ke bekas pada alamat IP yang ditetapkan, akan ada pelayan mendengar sedia untuk menerima sambungan.
Docker memainkan peranan penting dalam hal ini senario dengan mencipta peraturan iptables untuk memajukan trafik dari mesin hos ke bekas. Peraturan ini penting untuk membolehkan pelanggan berkomunikasi dengan pelayan WebSocket dalam bekas. Secara lalai, bekas Docker mendengar pada alamat IP dalaman mereka, yang tidak boleh diakses secara langsung daripada mesin hos. Peraturan iptables yang dicipta oleh Docker merapatkan jurang komunikasi ini.
Untuk melihat peraturan iptables ini, pembangun boleh menggunakan arahan berikut:
iptables -n -L iptables -t nat -n -L
Dengan membuat perubahan yang disebutkan pada alamat dengar dan memahami pemajuan Docker机制, pembangun boleh berjaya mewujudkan sambungan WebSocket ke pelayan dalam bekas Docker, menyelesaikan ralat "tetapan semula sambungan" dan mendayakan tingkah laku yang diharapkan untuk mencetak "bersambung" pada sisi klien.
Atas ialah kandungan terperinci Mengapa Pelayan WebSocket Saya Gagal Disambungkan Apabila Dilabuhkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!