Сколько нужно платить AJAX Push, чтобы сделать веб-страницы более интерактивными?

(Извините, если тема не озаглавлена ​​должным образом, буду признателен, если кто-нибудь поможет мне сделать ее более связанной с тем, что я объясню ниже).

В последнее время я очень заинтересован в том, чтобы познакомиться с AJAX push и всеми его основными идеями. Я знаю, что технология push AJAX делает веб-страницы более интерактивными на стороне сервера, но за всеми плавно интерактивными движениями, очевидно, стоит некоторая "тяжелая работа" за кулисами, как в реализации, так и в том, как она работает с ресурсами.

Итак, вкратце, давайте забудем о реализации, мне нужно, чтобы кто-нибудь объяснил мне, как работает AJAX push в отношении подключения к серверу, как (или сколько) ресурсов используется, или некоторые другие аспекты, которые следует учитывать при реализации этого метод.

Я не провел много исследований, поэтому у вас есть какие-либо документы, связанные с этим, я более чем рад прочитать.

2 ответа

Решение

Я действительно не вижу, как "Ajax Push" вещь. Я знаю длинные опросы, и я думаю, что это то же самое.

Недостатком длинного опроса является то, что на вашем сервере может быть открыто много незавершенных запросов. Не сокеты, а актуальные запросы. Идея длительного опроса:

  1. Клиент делает запрос на сервер
  2. Сервер не отвечает (не завершает запрос)
  3. Сервер ждет, пока есть что сказать (Клиенту)
  4. Когда сервер получает новую информацию (от другого клиента или где-то еще), он печатает эту информацию всем ожидающим клиентам (может быть много!) И завершает запрос
  5. Клиент получает эту информацию и немедленно делает другой запрос (с новой отметкой времени и / или хэшем и т. Д.)

Недостаток: если все 500 клиентов выполняют шаг 1 и больше ничего, сервер имеет 500 открытых запросов и просто ожидает отправки некоторой информации и завершения этих запросов. Большинство серверов не допускают 500 открытых HTTP-запросов...

Если у вас есть время, вы можете прочитать этот PDF. (Это долго, хотя.)

PS. Положительным моментом является то, что ваш сервер получает меньше HTTP-запросов (что означает меньшие издержки HTTP), и эта информация отправляется только тогда, когда есть что отправить (что также означает меньшие накладные расходы).

редактировать
Длинный пример опроса: http://hotblocks.nl/tests/ajax/poller/ с источником http://hotblocks.nl/tests/ajax/poller/callback.php?source

объяснение
Преимущество: меньше HTTP-издержек, потому что меньше HTTP-запросов. Допустим, количество пользователей является статическим (оно есть) и составляет 500.

При длинном опросе: 500 пользователей делают 1 запрос, а затем ждут............ и затем что-то меняется, и все 500 запросов завершаются (сервером), а затем "возобновляются" (новый HTTP-запрос) клиент.
Наверх: меньше запросов (1 на пользователя на новую информацию).
Недостаток: более длинные запросы (очень длинный холостой ход, что означает больше открытых запросов).

Без длительного опроса: 500 пользователей делают запрос, сервер отвечает "ничего нового", поэтому 500 пользователей делают новый запрос через 500 мс /1 с /5 с позже, а сервер снова отвечает "ничего нового" и т. Д. И т. Д., Пока на сервере не появятся актуальные новости и тогда ответ содержит что-то. И даже тогда клиенты сразу делают новый запрос.
Перевернутые: быстрые короткие запросы к серверу, которые можно быстро завершить.
Недостаток: многие, многие, многие из этих запросов к серверу (и каждый HTTP-запрос => HTTP-заголовки => MUCH накладные расходы).

пример объяснения
Пример очень (слишком) прост:

  1. Вы (клиент) делаете запрос на сервер для получения текущей информации
  2. Сервер дает вам эту информацию и метку времени
  3. Клиент получает информацию, использует ее (показывает сообщение) и делает новый запрос с отметкой времени
  4. Сервер сравнивает метку времени клиента с меткой времени сервера (filemtime файла в этом случае)
  5. Если изменение файла новее, чем отметка времени клиента: выведите содержимое нового файла
  6. Клиент получает эту информацию и новую метку времени Сервера
  7. Шаг 3 снова и т. Д.

Время между шагами 4 и 5 может быть очень долгим. В активном чате этого не будет. (Новая информация добавляется постоянно.) В многопользовательской игре это может быть (секунды, а не минуты).

Это может помочь вам начать:

http://www.icefaces.org/main/ajax-java/ajaxpush.iface

Тем не менее, эта ссылка гораздо лучше, в форме COMIC BOOK =))

http://www.ape-project.org/comics/1/Chapter-I-common-let-s-push.html

По сути, он очень похож на AJAX, теперь только сервер может общаться с клиентами, а не только с клиентскими запросами.

Другие вопросы по тегам