您可能会在 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 创建 iptables 规则以将流量转发到容器的 IP 地址。通过监听 0.0.0.0:8000,服务器确保它接受转发到其容器 IP 地址的连接。
以上是面对“连接被对等点重置”时,如何对 WebSocket 服务器进行 Docker 化?的详细内容。更多信息请关注PHP中文网其他相关文章!