2011-11-02 2 views
0

Я не понимаю, как долго длительный опрос может быть полезным, если XMLHttpRequest не дает доступа к частичному контенту ???Как долго может быть полезен опрос?

Нет никакой разницы, где ждать, на клиенте или на сервере. Ответ может быть показан только после завершения. Таким образом, как короткий опрос, так и длительный опрос кажутся одинаковыми.

Например, если я пишу чат-приложение, я могу как отправлять запросы GET для нормальной динамической службы, так и для службы Comet - результат будет идентичным, потому что я не могу получить контент до ответа на завершение сервлета.

Где моя ошибка?

Update 1.

Так что единственный смысл понятия «кометы» является то, что сервлет (например) нужно просто подождать как можно больше, прежде чем ответить не пытаясь никогда не говорить «нет данных»?

Тогда для чего существует такой интерфейс, как CometProcessor в API Tomcat?

ответ

2

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

+0

Так в чем же разница с «коротким» опросом? В коротком опросе я снова и снова буду переиздавать запрос. – Dims

+0

@Dims, с коротким опросом, если нет новых данных, которые вы сразу же возвращаете, и клиент ждет какой-то предварительно установленный интервал, надеясь, что в следующий раз будет больше данных. при длительном опросе, если нет данных _at all_ waiting, сервер держит соединение открытым и блокирует ответ, пока не будет найдено больше данных. – bdonlan

+0

Хорошо, наверное, я просто ожидал чего-то экстраординарного из длинного опроса, пока это простой совет. – Dims

0

С длинным опросом сервер выполняет «ожидание», уменьшая количество подключений HTTP для настройки. Вы запускаете опрос от клиента, а затем сервер растягивает ответ по мере необходимости, пока на нем не вернутся данные. Таким образом, вы не обременяете клиента запуском HTTP-запросов снова и снова.

1

Точка длинного опроса равна эмулировать процесс сервера, передающий данные клиенту. Что делает его эмуляцией, так это то, что сервер держит запрос от клиента, так что сервер решает, когда отвечать, т.е. кажется, что сервер контролирует передачу данных, когда на самом деле это не совсем. Фактически это не толкает данные в надлежащем смысле, поэтому длительный опрос - это всего лишь эмуляция push-based передачи.

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

+0

Но не отправляю ли я еще один запрос на короткий опрос? Тогда в чем разница? – Dims

+0

Разница заключается в том, что сервер не удерживает запрос при коротком опросе, он отвечает немедленно. –

0

При продолжительном опросе, сервер возвращает полного ответ как только у него есть какие-то данные (тогда, как говорят другие ответы, вопросы, клиент другой запрос).

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

HTH

+0

В обоих механизмах опроса я буду переиздавать запрос сразу после ответа на предыдущий. Поэтому у меня нет шансов опоздать с событием. – Dims

+0

, но с коротким опросом существует большая вероятность быть «между запросами», то есть в процессе отсоединения/повторного подключения => так, немного медленнее. Кроме того, больше накладных расходов. – laher

+0

TBH Возможно, я неправильно понял ваше недоразумение ... возможно, ваше недоразумение является более фундаментальным, чем это. Ваши прочитанные вещи понравятся: http://en.wikipedia.org/wiki/Comet_(programming)? – laher