问题:
在以下情况下难以连接到在 Docker 容器中运行的 WebSocket 服务器从容器外部访问它。
服务器代码:
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... }
Dockerfile:
FROM golang:1.11.4-alpine3.8 ... (Build and expose port commands) ...
预期行为:
从容器外部连接到 WebSocket 服务器应在客户端打印“已连接”。
实际错误:
客户端因错误而恐慌:“恐慌:读取 tcp [::1]:60328->[::1]:8000: 读取:连接已被对等方重置。”
原因:
服务器正在容器内侦听本地主机(127.0.0.1),无法从容器外部访问该主机。
解决方案:
要解决此问题,请将 server.go 中服务器的监听地址更改为“:8000”而不是“localhost:8000”。这样,服务器将侦听容器的所有 IP 地址。
// server.go func RootHandler(w http.ResponseWriter, r *http.Request) { ... (WebSocket handling code) ... } // main() server := http.Server{Addr: ":8000"} ... (Rest of server setup) ...
其他信息:
以上是为什么我无法从外部连接到 Docker 容器内的 WebSocket 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!