Wave は、他のユーザーが何かを入力したかどうかを確認するためにミリ秒ごとにサーバーをポーリングするわけではありません。帯域幅を占有することもありません。
9 に答える
永続的な HTTP、コメット
HTTP 接続を維持し、入力した文字を送信します
*2014 年に編集: WebSocket とHTTP/1.1 Upgrade headerも参照してください。ブラウザは2010年頃にこれを実装し始めたので、これを元の回答に追加しています.
彼らはおそらくWebSockets、別名サーバー送信イベントを使用します:http ://www.w3.org/TR/websockets基礎となるプロトコルは(ドラフトとして)IETFで見つけることができます。
更新:WebSocketにはまだ実装がないようです。また、Google I / O(11:00に移動)からのビデオでは、長寿命のHTTPGETリクエストについて説明しています。
サーバープッシュは、待機、応答、クローズ、再オープンのパラダイムです。
待機: GWT コードがサーバーに呼び出しを行って、まだ取得していないデータを取得したら、フリーズ (待機) します。
応答: 要求されたデータが
利用可能になったら、それで応答します閉じる: 次に、接続を閉じます。
再オープン: GWT コードが応答を受信したら、すぐに新しい接続を開き、次のイベントを照会します。
動画を見るGoogle Wave: Powered by GWTの 55 分頃 (終了間際)
Q: 永続的な接続、長寿命の http 接続をどのように実装するか
A: 将来の計画: HTML5 Web ソケット。長期間。それが私たちが現時点で使用しているものです。
Q: ダウンロードしてプレイできるプラットフォームやライブラリはありますか?
A: わかりません。そう思わないで
PS: それは彼が言ったことです。私にはあまり意味がありませんでした(「将来の計画」対「現在使用中」)。英語を母国語とする人は、私が正しく書き写したかどうかを確認したいと思うかもしれません。
純粋な憶測ですが、HTML 5 仕様のServer Side DOMイベントを使用している可能性はありますか?
WebSocket の全体的な理由は、ブラウザがサーバーに対して双方向ソケットを開いたままにして、リアルタイム通信を使用できるようにすることです。誰かがウェーブ クライアントで入力すると、サーバーに送信されるイベントがトリガーされ、サーバーは、イベントを受信してイベントを渡す相手 (この場合は入力された文字) を確認します。
WebSocket と Comet は異なります。
グランビル
Google Wave クライアント コードのリバース エンジニアリングに時間を費やしました ( http://antimatter15.com/misc/read/の恥知らずなプラグインです。これは、ロボットやガジェットを必要としない、すべてのパブリック Wave の Google Wave の読み取り専用パブリック クライアントです)。 Google がアップグレードを開始しなかった 1 か月前は、はるかに便利でした)。
とにかく、Google は Google Closure ライブラリ (実際にはオープン ソースで文書化されています) の特定の側面で GWT フレームワークを使用し、コメントから gmail 内のチャット機能にも使用される goog.net.BrowserChannel ライブラリを使用します。
http://closure-library.googlecode.com/svn/docs/closure_goog_net_browserchannel.js.html
将来的には、おそらく現在の websocket の彗星です。それは Firefox 3.5 で動作し、私が読んだことから、websocket は FF のナイトリー ビルドでのみ利用可能であるため、間違っている可能性があります... IE ではまったく動作しないようです。
彼らはajaxリクエストを使用していると思います。非同期の XMLHttpRequest を実行し、サーバーがブラウザに送信するものを持っている場合、登録された JavaScript コールバックがデータを取得し、それを処理します。基本的に、ブラウザは次のイベントをリクエストし、それを処理し、無期限に繰り返します。