私のajaxが多いサイトのいくつか(私が構築したサイトではなく、私が訪問したサイト)に特定の自動更新機能があることに気づきました。たとえば、GMailでは、新しいメッセージを受け取った場合、ページをリロードせずに新しいメッセージが表示されます。FacebookブラウザベースのIMクライアントでも同じです。私の知る限り、サーバーとブラウザーのバインディングを処理するJavaアプレットはないので、AJAXと、おそらく私が知らない要素によって行われていると思います。したがって、私の推測では、次の2つの方法のいずれかで実行されます。
javascriptは、サーバー側スクリプトに対して安定した「ping」を実行し、利用可能な更新をチェックします(これにより、これらのページの一部が他の高負荷のページをクロールする理由が説明されます)。また
javascriptはぼんやりと座っており、サーバーサイドスクリプトは実際にブラウザへの更新を「プッシュ」します。しかし、これが可能かどうかはわかりません。まだpingを実行するある種のAJAX関数があると思いますが、それはすべて「更新はありますか?」と尋ねるだけです。サーバースクリプトには、「いいえ」または「質問してよかった」という単純なブール値があります。ただし、この場合、データの変更はスクリプトを直接呼び出す必要があります。これにより、データの変更の準備が整い、ブール関数に変更が加えられます。
それで、それは可能/実行可能/それがどのように機能するのですか?私は次のようなものを想像します:
誰かが電子メール/IM/ DBの更新をサーバーに送信し、サーバーがスクリプトのURLと関連するGET変数を使用してスクリプトを呼び出し、スクリプトが変更を記録して「利用可能な更新」変数を更新し、AJAXが応答を取得します。実際に更新すると、AJAXは通常の「更新ページ」機能を実行します。この機能は通常の更新スクリプトを実行してブラウザに出力します。
jsが常にチェックを行っているだけで、a)サーバーが1.5秒ごとに動作し、b)ブラウザが1.5秒ごとに動作する必要があるため、私は質問します。ああ、私はIMを手に入れました!本物のIMクライアントのように!」