Сколько нужно платить AJAX Push, чтобы сделать веб-страницы более интерактивными?
(Извините, если тема не озаглавлена должным образом, буду признателен, если кто-нибудь поможет мне сделать ее более связанной с тем, что я объясню ниже).
В последнее время я очень заинтересован в том, чтобы познакомиться с AJAX push и всеми его основными идеями. Я знаю, что технология push AJAX делает веб-страницы более интерактивными на стороне сервера, но за всеми плавно интерактивными движениями, очевидно, стоит некоторая "тяжелая работа" за кулисами, как в реализации, так и в том, как она работает с ресурсами.
Итак, вкратце, давайте забудем о реализации, мне нужно, чтобы кто-нибудь объяснил мне, как работает AJAX push в отношении подключения к серверу, как (или сколько) ресурсов используется, или некоторые другие аспекты, которые следует учитывать при реализации этого метод.
Я не провел много исследований, поэтому у вас есть какие-либо документы, связанные с этим, я более чем рад прочитать.
2 ответа
Я действительно не вижу, как "Ajax Push" вещь. Я знаю длинные опросы, и я думаю, что это то же самое.
Недостатком длинного опроса является то, что на вашем сервере может быть открыто много незавершенных запросов. Не сокеты, а актуальные запросы. Идея длительного опроса:
- Клиент делает запрос на сервер
- Сервер не отвечает (не завершает запрос)
- Сервер ждет, пока есть что сказать (Клиенту)
- Когда сервер получает новую информацию (от другого клиента или где-то еще), он печатает эту информацию всем ожидающим клиентам (может быть много!) И завершает запрос
- Клиент получает эту информацию и немедленно делает другой запрос (с новой отметкой времени и / или хэшем и т. Д.)
Недостаток: если все 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 накладные расходы).
пример объяснения
Пример очень (слишком) прост:
- Вы (клиент) делаете запрос на сервер для получения текущей информации
- Сервер дает вам эту информацию и метку времени
- Клиент получает информацию, использует ее (показывает сообщение) и делает новый запрос с отметкой времени
- Сервер сравнивает метку времени клиента с меткой времени сервера (
filemtime
файла в этом случае) - Если изменение файла новее, чем отметка времени клиента: выведите содержимое нового файла
- Клиент получает эту информацию и новую метку времени Сервера
- Шаг 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, теперь только сервер может общаться с клиентами, а не только с клиентскими запросами.