您可能會在 Docker 中容器化 WebSocket 伺服器時遇到困難。本文提供了解決此問題的指導。
場景:
您有一個 WebSocket 伺服器程式碼 (server.go) 和一個客戶端 (client.go)。在 Docker 容器外部執行這些檔案不會出現任何問題。然而,容器化伺服器後,從容器外部連線會出現錯誤:
panic: read tcp [::1]:60328->[::1]:8000: read: connection reset by peer
原因:
問題出在伺服器監聽位址。預設情況下,伺服器偵聽本機主機 (127.0.0.1)。這在容器外部運行時沒問題,但在容器內部,該位址無法存取。解決方案:
要解決此問題,請將監聽位址變更為 0.0.0 .0.0:8000,指示伺服器監聽其所有容器的 IP 位址。server := http.Server{Addr: ":8000"}
說明:
透過揭露Docker 容器中的連接埠(例如,-p 8000:8000),Docker 建立流量轉送至容器的IP 位址。透過監聽 0.0.0.0:8000,伺服器確保它接受轉送到其容器 IP 位址的連線。以上是面對「連線被對等點重置」時,如何對 WebSocket 伺服器進行 Docker 化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!