JS: автоматическое обновление без нескольких временных интервалов

#ajax #performance #real-time

#ajax #Производительность #в режиме реального времени

Вопрос:

Например, я смотрел на такие вещи, как поиск Google в реальном времени (не Google instant) и facebook chat. Данные поступают к ним постоянно, но с непредсказуемыми интервалами. Однако, кажется, что это всегда происходит почти мгновенно.

Я реализовал нечто подобное на http://malachy.org.uk/stream , однако способ, которым я это сделал, заключается в том, что я проверяю XHR на наличие обновлений каждые пару секунд, что, я думаю, немного неэффективно, и в любом случае, проверяя журнал сетевых запросов в firebug в Google realtime, например, я не вижу, чтобы временные интервалы появлялись почти с такой же скоростью, как новые сообщения (в любом случае, на модные темы).

Есть идеи, как это делается?

Приветствия

Ответ №1:

Посмотрите на:

Поскольку протокол HTTP (используемый AJAX) является типичным протоколом запроса / ответа, простого способа добиться этого не существует. Обратный AJAX использует несколько хитроумных методов, таких как длительный опрос, является ли WebSockets совершенно новой технологией где-то около HTML5, полностью решая эту проблему (пока недостаточно хорошо зарекомендовавшую себя и внедренную).

Ваше решение (запрашивать сервер каждые несколько секунд) является самым простым, но оно приводит как к большому объему сетевых вызовов, так и иногда к неприемлемой задержке.

Комментарии:

1. Хм, ну, теперь моя идея состоит в том, чтобы иметь python CGI, который запрашивает новые данные и выдает их при наличии (т. Е. длительный опрос). Причина, по которой я использую python, заключается в том, что длительно работающие PHP-скрипты, по-видимому, будут использовать рабочие процессы Apache.