2009-04-09 2 views
58

すべてのHTTPレスポンスは、AJAXを使用して作成されたものであっても、クライアントがそれらを開始する必要があります。しかし、GMailのチャット機能は、私が快適なコンピュータチェアに座っているだけで、ブラウザとはやり取りしていなくても、他のユーザーからメッセージを受け取ることができます。彼らはどうしたのですか?Gmailのチャットは、クライアントとのやりとりなしにAJAXリクエストを作成する方法を教えてください。

+8

質問ハイジャック:Gmailはチャットクライアントの実装にどのようなAJAXポーリング戦略を使用していますか? – Jimmy

+0

あなたは実質的に質問を書き直しました。 –

+0

@Pablo:うん...かなり確信して、これは彼が求めていたものですが、「私はすでに答えただろうまで、私はそれをクリーンアップしたかった」それを把握する他の誰かが同じミスを犯したFOREませんでした。 – Shog9

答えて

42

ハイテクはそれは、ブラウザにサーバーからデータをプッシュ生きてHTTP接続を維持することだ

「彗星」として知られているが、また、など、「サーバ・プッシュ」、「リバースAJAX」、などです。 wikipedia articleEnglish version)に詳しい情報があります。

またDWRのJoe Walkerとpretty good presentationがあり、ここで彼は彗星について語っています。

+0

Gmailはどの方法を使用しているのですか?隠されたIFrame、XMLHttpRequest? – chat

+1

@chatビューソース? –

+0

おそらくWikipediaの英語版にリンクしていますか? –

8

正当に指摘されているように、HTTPではクライアントがデータを「プル」する必要があります。 Gmailでは、ユーザーが何かをクリックする必要はなく、タイマーを使用してHTTP操作をトリガーすることによって、サーバーからデータを引き出すことができます。したがって、それは自動であるように見えるかもしれませんが、依然としてクライアントが開始しています。

+1

私は彼らが彗星を使用していると聞いたことがあります。それはクライアントの要求ではありませんAFAIK –

+1

私は参照してください。今日何か新しいことを学びました。ありがとう! – sybreon

+7

Cometは依然としてクライアントが開始したAFAIKです。ただ、応答を返すのではなく、面白​​いことがあるまでサーバは接続を開いたままにしています。 –