現在、頻繁に使用される最も人気のあるサイトでは、毎日のリアルタイム更新が一般的です。
これらの「リアルタイム更新」はどのように機能するのでしょうか。一般的な鳥瞰図を探しています。 JSが更新のためにX秒ごとにサーバーを呼び出して、それを<ul>
に追加することはできないと思います。サーバーから送信された通知は、より多くのコンテンツをプルするために送信されましたか?
デモでこれを説明する簡単なハウツー記事があれば素晴らしいでしょうか?
Stack Overflowは、リアルタイムの更新に Web Sockets を使用しています。ソースコード(2012年のソースコード)を見ると、次のようになります。
StackExchange.ready(function () {
StackExchange.realtime.init('ws://sockets.ny.stackexchange.com');
StackExchange.realtime.subscribeToInboxNotifications();
StackExchange.realtime.subscribeToReputationNotifications('1');
});
ただし、一部のOperaバージョンはWebSocketをサポートしていないことに注意してください。( Opera 10.7 まで)
ただし、FacebookはWeb Socketsを使用していないようで、サーバーが新しい情報が得られるまで接続を保持する long polling という手法で単純なXHRを使用しているだけだと思います。リクエストに応答します。開発ツールを開くと、ステータスが保留中のリクエストが常に1つあることがわかります。
実際、約60秒ごとにリクエストを送信しています。
Twitterも「リアルタイム更新」にシンプルなXHR(1分間隔)を使用しているようです。
Facebookはlong polling/Comet
を使用します。そのため、接続を確立して応答を待ちます。応答がない場合は、タイムアウトして再試行します。タイムアウトは約40秒です。これが、ほとんどのインスタント更新を行う方法です。ただし、それらは技術の組み合わせを使用します。ロングポーリングの詳細については、こちらをご覧ください。