Как чат GMail может отправлять AJAX-запросы без взаимодействия с клиентом?
Вопрос
Все HTTP-ответы требуют, чтобы клиент инициировал их, даже те, которые сделаны с помощью AJAX.Но функция чата GMail способна получать сообщения от других пользователей, даже когда я просто сижу в своем удобном компьютерном кресле и смотрю, но не взаимодействую с браузером.Как они это сделали?
Решение
Эта технология известна как "comet", но также как "server push", "reverse ajax" и т.д.
Речь идет о передаче данных с сервера в браузер, поддержании http-соединения в рабочем состоянии.Найдите более подробную информацию об этом на статья в Википедии (Английская версия).
Кроме того, вот довольно хорошая презентация с Джо Уокером из DWR, где он рассказывает о comet.
Другие советы
Как вы справедливо отметили, HTTP требует, чтобы данные были "извлечены" клиентом.Gmail по-прежнему может "извлекать" данные с сервера, используя таймер для запуска HTTP-операции вместо того, чтобы требовать, чтобы пользователь что-то нажимал.Таким образом, может показаться, что это происходит автоматически, но это все еще инициируется клиентом.
Да, "Кометы" - это верно. Приложения Google Web Toolkit от Райана Дьюсбери в главе 9 объясняется, как создать приложение для обмена мгновенными сообщениями на базе Comets.