2012-05-14 58 views
75

Websocketでping/pongメッセージを読んで接続を維持していますが、その内容はわかりません。それは明確なフレームタイプですか? (私は、ping-pongに関連したchromeのjavascript WebSocketオブジェクトには何も表示されません)。それとも単なるデザインパターンですか(文字通り「ping」などの文字列をサーバーに送信して応答させるなど)。ピンポンは継続フレームに関連していますか?ブラウザからwebsocket ping/pongフレームを送信する

私は、Mongrel2の背後で動作するPythonフレームワークを使用しているので、Mongrel2にping/pongメッセージを送信する方法があるかどうか疑問に思っています。それを心配する必要があるpythonアプリ。別のHTTPメソッドを持っているのと似ています。そして、私は、専用のping/pongメッセージフレームが文字列 "ping"よりも簡単で(サーバとネットワークの負荷が少ない)、それはあまり問題にはならないだろうと考えています。

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

+0

サーバーからpingするだけです。標準化されていないポートに関するネットワーキングの問題は誰もが知っているので、定期的な間隔でpingを開始しています。私は、あまり書かれていないサーバにpingを実行することができると思いますが、それに敏感な何かをするのはあまりスマートではないかもしれません。 –

答えて

84

pingフレームを送信したり、ポンフレームを受信するJavascript APIはありません。これは、ブラウザでサポートされているかどうかによって異なります。ブラウザがping/pongフレームをサポートしているかどうかを有効、設定、検出するAPIもありません。これにはdiscussion about creating a Javascript ping/pong APIがありました。将来はpingが設定可能/検出可能になる可能性がありますが、Javascriptがping/pongフレームを直接送受信できるようにはなりません。

ただし、クライアントコードとサーバーコードの両方を制御すると、より高いレベルで簡単にping/pongサポートを追加できます。既にメッセージタイプヘッダー/メタデータが必要な場合は、メッセージタイプヘッダー/メタデータが必要ですが、それはかなり簡単です。毎秒数百回のpingを送信する予定がある場合や、数千人の同時クライアントがいる場合を除き、オーバーヘッドはごくわずかです。

+4

それは残念です。答えをありがとう、まさに私が探していたもの。 – danny

+7

ping/pongがJavaScript WebSocketの新しいAPIに実装されていないことは残念です。一方、その機能のカスタム実装はかなりシンプルでなければなりません。良いレスポンス(+1) – Tom

22

Pingはサーバーからクライアントにのみ送信され、ブラウザはPong OpCodeを使用してできるだけ早く自動的に応答する必要があります。だからあなたはそれをより高いレベルで心配する必要はありません。

すべてのブラウザが想定しているように標準をサポートしているわけではありませんが、このようなメカニズムの実装には多少の違いがあり、Pong応答機能がないことさえあります。しかし私は個人的にPing/Pongを使用しており、このタイプのOpCodeと低レベルのクライアント側の実装での自動応答を実装していないクライアントは見たことがありません。

+0

興味深いことに、サーバーがコールを開始するのに意味があります。どのウェブサーバーを使用していますか? – danny

+0

私は自分の楽しみのために.Net/MonoでWebSocketsプロトコルの独自の実装を使用しています。ソースはhttps://github.com/Maksims/gh12-server – moka

+1

にあります。私のテストでは、ping/pongをサポートしていない一般的なブラウザが見つかりました。どのくらい覚えていない –

関連する問題