2009-04-09 5 views
58

Все ответы HTTP требуют, чтобы клиент инициировал их, даже те, которые были сделаны с использованием AJAX. Но функция чата GMail позволяет получать сообщения от других пользователей, даже когда я просто сижу в своем удобном компьютерном кресле, но не взаимодействую с браузером. Как они это делают?Как GMail Chat может делать запросы AJAX без взаимодействия с клиентом?

+8

Вопрос: что такое стратегия опроса AJAX, используемая Gmail для реализации клиента чата? – Jimmy

+0

wow вы практически переписали вопрос. –

+0

@Pablo: да ... довольно уверен, что это то, о чем он просил, но не понял этого, пока я уже не ответил, поэтому я хотел его почистить, прежде чем кто-то другой допустил ту же ошибку. – Shog9

ответ

42

Это технология известна как «комета», но и как «сервер толчок», «обратный Аякса» и т.д.

Это о подталкивании данных от сервера к браузеру, сохраняя соединение HTTP живы. Узнайте больше об этом на wikipedia article (English version).

Также есть pretty good presentation с Джо Уокером из DWR, где он рассказывает о кометах.

+0

Знаете ли вы, какой метод использует Gmail? Скрытый IFrame, XMLHttpRequest? – chat

+1

@chat посмотреть источник? –

+0

Возможно, ссылка на английскую версию Википедии? –

8

Как вы по праву отметили, HTTP требует, чтобы данные были «вытащены» клиентом. Gmail все еще может «вытащить» данные с сервера, используя таймер для запуска операции HTTP вместо того, чтобы требовать от пользователя щелчка. Таким образом, это может показаться автоматическим, но оно по-прежнему инициировано клиентом.

+1

Я слышал, что они используют комету. Это не клиентский запрос AFAIK –

+1

Я вижу. Сегодня узнал что-то новое. Благодаря! – sybreon

+7

Комета по-прежнему инициирована клиентом AFAIK - это просто, что сервер держит соединение открытым, пока у него не получится что-то интересное, вместо того, чтобы немедленно вернуть ответ. –