我正在使用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以編程方式訪問該數字嗎?最後,我希望能夠在不需要配置的情況下在多種網絡上運行此服務器,並且只需要即可工作。我錯過了什麼?