すべてのHTTPレスポンスは、AJAXを使用して作成されたものであっても、クライアントがそれらを開始する必要があります。しかし、GMailのチャット機能は、私が快適なコンピュータチェアに座っているだけで、ブラウザとはやり取りしていなくても、他のユーザーからメッセージを受け取ることができます。彼らはどうしたのですか?Gmailのチャットは、クライアントとのやりとりなしにAJAXリクエストを作成する方法を教えてください。
答えて
ハイテクはそれは、ブラウザにサーバーからデータをプッシュ生きてHTTP接続を維持することだ
「彗星」として知られているが、また、など、「サーバ・プッシュ」、「リバースAJAX」、などです。 wikipedia article(English version)に詳しい情報があります。
またDWRのJoe Walkerとpretty good presentationがあり、ここで彼は彗星について語っています。
Gmailはどの方法を使用しているのですか?隠されたIFrame、XMLHttpRequest? – chat
@chatビューソース? –
おそらくWikipediaの英語版にリンクしていますか? –
正当に指摘されているように、HTTPではクライアントがデータを「プル」する必要があります。 Gmailでは、ユーザーが何かをクリックする必要はなく、タイマーを使用してHTTP操作をトリガーすることによって、サーバーからデータを引き出すことができます。したがって、それは自動であるように見えるかもしれませんが、依然としてクライアントが開始しています。
私は彼らが彗星を使用していると聞いたことがあります。それはクライアントの要求ではありませんAFAIK –
私は参照してください。今日何か新しいことを学びました。ありがとう! – sybreon
Cometは依然としてクライアントが開始したAFAIKです。ただ、応答を返すのではなく、面白いことがあるまでサーバは接続を開いたままにしています。 –
うん彗星は正しいです。 Google Web Toolkit Applications by Ryan Dewsburyは、9章でCometsベースのインスタントメッセンジャーアプリケーションを作成する方法を説明しています。
質問ハイジャック:Gmailはチャットクライアントの実装にどのようなAJAXポーリング戦略を使用していますか? – Jimmy
あなたは実質的に質問を書き直しました。 –
@Pablo:うん...かなり確信して、これは彼が求めていたものですが、「私はすでに答えただろうまで、私はそれをクリーンアップしたかった」それを把握する他の誰かが同じミスを犯したFOREませんでした。 – Shog9