開發人員在嘗試使用 Docker 容器化 WebSocket 伺服器時遇到問題。伺服器程式碼使用「connected」寫入新連接,並且在容器外運行良好,但當放置在Docker 容器內時,客戶端會因「連接重設」錯誤而出現恐慌,並顯示錯誤訊息「read tcp [: :1]” :60328->[::1]:8000: 讀取: 連線被對等方重設。 "開發者不確定需要進行哪些更改才能在容器內建立與伺服器的WebSocket 連線。
要解決此問題,開發者需要修改伺服器的監聽位址。他們應該將其變更為“:8000”,而不是使用“localhost:8000”(這會限制伺服器偵聽容器內的IP 位址127.0.0.1)。伺服器將監聽指派給容器的所有IP位址。
Docker 在這方面發揮著至關重要的作用透過建立iptables 規則將流量從主機轉送到容器來實現場景。 ,Docker 容器偵聽其內部IP 位址,這些位址無法從主機直接存取。 🎜>透過對監聽位址進行上述更改,並了解Docker 的轉發機制後,開發人員可以在Docker 容器內成功建立與伺服器的WebSocket 連接,解決「連接重置」錯誤並實現在客戶端印出「已連線」的預期行為。以上是為什麼我的 WebSocket 伺服器在 Docker 化後無法連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!