Выполняет ли длинный опрос AJAX входящие данные немедленно?

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

Вопрос: ли метод опроса AJAX высвобождает фрагментированные данные сразу после их получения или ожидает закрытия запроса?

Если нет, то есть ли способ использовать технику iFrame и избавиться от "счетчика смерти" в браузере?

Спасибо!


person crockpotveggies    schedule 08.07.2012    source источник


Ответы (3)


Комета через ajax (длинный опрос ajax) делает данные доступными для внешнего интерфейса приложения только после завершения запроса. Это полезно, когда у вас есть дискретные пакеты данных, которые нужно отправлять через нерегулярные интервалы. Если вы хотите разбить данные на части, просто завершите запрос после первого фрагмента, а затем попросите клиента немедленно запросить еще один фрагмент. Если есть еще один готовый кусок, подавайте его прямо сейчас; если нет, просто заставьте клиента подождать, пока он не появится.

person Andrew Gorcester    schedule 08.07.2012

Вероятно, стоит отметить, что HTTP Long-Polling и HTTP Streaming подпадают под действие Comet. Длинный опрос требует, чтобы соединение было закрыто для отправки данных. Потоковая передача не может отправлять данные по существующему соединению, не закрывая его.

Я не верю, что есть простой способ решить проблему «прядильщика смерти». Я написал сообщение об этом несколько лет назад, и я до сих пор не знаю надежного решения.

Лично я бы порекомендовал вам использовать WebSockets, а не хакерские решения Comet.

Комета о прошлом. Давайте сделаем будущее реальным.

- Алекс Рассел, изобретатель кометы

person leggetter    schedule 09.07.2012
comment
спасибо за ссылки! на самом деле я уже использую веб-сокеты, и они мне очень нравятся. К сожалению, этот конкретный интерфейс должен иметь универсальную поддержку и быть общедоступным (в отличие от другого нашего программного обеспечения). таким образом, браузеру Android или Blackberry это будет нелегко;) - person crockpotveggies; 10.07.2012

Освобождение данных .... Независимо от того, разбиты они на части или нет, они могут быть сброшены в поток и доступны со стороны клиента (IE может действовать по-другому)

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

person Patrick Cooper    schedule 09.08.2012