1. ホーム
  2. javascript

[解決済み] ブラウザからWebSocketのPing/Pongフレームを送信する

2022-05-03 07:17:18

質問

ウェブソケットで接続を維持するためのping/pongメッセージについてずっと読んでいますが、それが何なのかよくわかりません。 それは明確なフレームタイプですか(私はピンポンに関連するクロームのjavascriptのWebSocketオブジェクト上の任意のメソッドを見ません)。 それとも単なるデザインパターンなのでしょうか(たとえば、文字通りサーバに "ping" などの文字列を送信し、応答させる)。 ping-pongは継続フレームと全く関係がないのでしょうか?

Mongrel2に特定のping/pongメッセージを送ることで、私のPythonアプリが心配することなく、接続を維持することができるのでしょうか? そのために別の HTTP メソッドを用意するのと同じような感じでしょうか。 そして、専用の ping/pong メッセージフレームは、文字列 "ping" よりもシンプル(サーバーとネットワークの負荷が少ない)であると想像しています、おそらくそれはあまり重要ではないでしょうが。

EDIT: 私はちょうど見てみました。 RFC 6455 で、PingとPongは独自のオペコードを持つコントロールフレームタイプであることは間違いなさそうです。 では、ChromeのjavascriptからPingフレームを送信するにはどうすればよいのでしょうか?

どのように解決するのですか?

Pingフレームを送信したり、Pongフレームを受信するためのJavascript APIはありません。これはブラウザによってサポートされているか、されていないかのどちらかです。また、ブラウザが ping/pong フレームをサポートし、使用しているかどうかを有効化、設定、検出するための API もありません。ありました Javascript の ping/pong API を作成することについて議論しました。 このため 将来的にPingを設定/検出できるようになる可能性はありますが、Javascriptで直接Ping/Pongフレームを送受信できるようになるとは思えません。

しかし、もしあなたがクライアントとサーバーの両方のコードを制御するなら、より高いレベルで簡単にping/pongサポートを追加することができます。もしまだそれがなければ、メッセージに何らかのメッセージタイプのヘッダー/メタデータが必要になりますが、それはとても簡単なことです。1秒間に何百回もPingを送信する予定があったり、何千ものクライアントが同時に存在するのでなければ、自分で行う場合のオーバーヘッドはかなり小さくなるでしょう。