Подтвердить что ты не робот

Как работают обновления в реальном времени?

Теперь обновления в реальном времени в режиме реального времени распространены на большинстве популярных сайтов, которые имеют тяжелые привычки.

Мне интересно, как работают эти "обновления в реальном времени"? Я просто ищу общий взгляд на птицу. Я подозреваю, что JS не может вызывать сервер каждые X секунд для обновления, а затем добавлять его к <ul>. Сообщение отправлено с сервера, чтобы получить больше контента?

Было бы здорово, если бы была простая статья, объясняющая это с помощью демонстрации?

4b9b3361

Ответ 1

Переполнение стека использует Web Sockets для обновлений в реальном времени. Если вы посмотрите в исходном коде (строка 35), вы увидите:

StackExchange.ready(function () {
    StackExchange.realtime.init('ws://sockets.ny.stackexchange.com');
    StackExchange.realtime.subscribeToInboxNotifications();
    StackExchange.realtime.subscribeToReputationNotifications('1');
});

Но обратите внимание, что некоторые версии Opera не поддерживают WebSocket. (пока Opera 10.70)

Однако Facebook, похоже, не использует веб-сокеты, и я думаю, что они просто используют простой XHR с помощью метода длительный опрос, который сервер держит в соединении до появления новой информации, а затем сервер будет отвечать на запрос. Если вы откроете инструменты разработчика, вы увидите, что всегда есть один запрос, который имеет статус ожидания.

Это действительно, отправка запроса каждые ~ 60 секунд.

Ответ 2

Кажется, что Twitter также использует простые XHR (интервалы в 1 минуту) для своих "обновлений в реальном времени".

Ответ 3

Facebook использует long polling/Comet. Таким образом, он устанавливает соединение и ждет ответа, если ответа нет, тогда он истекает время и снова пытается. Тайм-аут составляет около 40 секунд. То, как это делает большинство мгновенного обновления. Однако они используют комбинацию методов. Подробнее о длинном опросе здесь.

http://en.wikipedia.org/wiki/Comet_(programming)