私はウェブソケットを初めて使用しています。私のセットアップで送信後にOPEN readystateでwebsocket接続を維持する方法は?
は、私はそのonmessage
コールバックを設定し、WebSocket
オブジェクトを作成し、テストするためにそのsend
メソッドを呼び出しゴー(playground)
で書かれた些細なのWebSocketサーバーを持っています。
var w = new WebSocket("ws://localhost:12345/echo")
w.onmessage = (msg) => {
console.log(msg.data)
}
w.onopen =() => {
w.send("Hello") // this fires OK
}
サーバーコードに基づいて発生すると予想されるのは、「Hello」メッセージを受信し、クライアントに1.5秒ごとに「yahoo」を送信し続けることです。実際には "こんにちは"が送られてきますが、 "yahoo"のどれもそれを通過しません。それはWebSocket.readystateに沿ったどこかが3(CLOSED)になったようです。
明確にするために、サーバーは「Hello」を受信して印刷し、実際には1.5秒ごとに「yahoo」メッセージを送信しますが、接続は閉じられているため、onmessage
コールバックは発生しません。
何か不足または誤解していますか?
EDIT:comparison github.com/gorilla vs. golang.org/x/netを介して、golang.org/x/net websocket実装はpongをサポートしていません。これはそれの確認かもしれません。
EDIT:golang.org/x/net/websocketパッケージは、ハンドラServeHTTP関数が返ってくるときにwebsocket接続を閉じます。デフォルトでは、WebSocket接続はハンドラのインスタンスに関連付けられています。
gorilla/websocketを使用することをお勧めします。Goのベスト・インプリメンテーションは、例をご覧ください:https://github.com/gorilla/websocket/tree/master/examples –