我是websockets的新手。如何在發送後在OPEN中保持websocket連接狀態?
在我的設置我已經寫在Go(playground)
一個微不足道的WebSocket服務器我做一個WebSocket
對象,建立了onmessage
回調並調用其send
方法進行測試。
var w = new WebSocket("ws://localhost:12345/echo")
w.onmessage = (msg) => {
console.log(msg.data)
}
w.onopen =() => {
w.send("Hello") // this fires OK
}
我期望根據服務器代碼發生的事情是接收「Hello」消息並不斷向客戶端發送「yahoo」每1.5秒。實際發生的事情是發送了「你好」,但沒有一個「雅虎」通過。它似乎沿着WebSocket.readystate變成了3(CLOSED)。
爲了澄清,服務器接收和打印「Hello」,然後實際上每隔1.5秒觸發一次「雅虎」消息,但連接已關閉,因此onmessage
回調不會觸發。
我是否遺漏或誤解任何東西?
編輯:跑遍comparison github.com/gorilla vs. golang.org/x/net,聲稱golang.org/x/net websocket實現不支持pong。這可能是對它的確認。
編輯:當處理程序ServeHTTP函數返回時,包golang.org/x/net/websocket關閉websocket連接。默認情況下,websocket連接綁定到處理程序的實例。
我推薦你使用gorilla/websocket是Go中的最佳實現,看一看例子:https://github.com/gorilla/websocket/tree/master/examples –