我正在使用Gorilla/websocket
运行一个Go web服务器用于实时象棋/聊天应用程序。据我所知,我在两个位置定义了地址和端口,这个功能是Go http.ListenAndServer()
方法和Javascript new Websocket();
功能。这可以在同一台主机上的浏览器上很好地工作,但是当试图通过内部网络扩展功能时会变得棘手。所以我用,例如:内部网络需要静态IP的Websockets地址?
转到:
PORT := "0.0.0.0:8080"
// ...
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
h.serveWs(hub, w, r) // h is a chessboard Handler wrapper
})
//...
http.ListenAndServe(PORT, nil)
的Javascript:
conn = new WebSocket("ws://0.0.0.0:8080/ws");
在我的努力得到超过我已经尝试使用网络的不同设备这方面的工作,而不是0.0.0.0
地址,localhost
或我的hostname
和我的主机的内部IP(例如)10.232.44.20
;对于后者,内部IP硬编码,它可以工作,但其他尝试不会。我想到用0.0.0.0
将接受来自网络,这是我从这个答案聚集内所有连接: What is the difference between 0.0.0.0, 127.0.0.1 and localhost?
我应该如何编程ListenAndServe
以及new Websocket
,这样我可以在内部网络访问服务器,而无需硬编码我的内部IP地址?我应该从Js和Go以编程方式访问该数字吗?最后,我希望能够在不需要配置的情况下在多种网络上运行此服务器,并且只需要即可工作。我错过了什么?