Как работает периодическая почтовая рассылка Gmail?

Когда я использую gmail, некоторые новые письма, которые я только что получил, появляются в папке «Входящие», даже если я не обновил страницу. Я считаю, что это было сделано в Аяксе.

Есть ли хорошая демонстрация, которая очень похожа на нее? Периодически проверяя и получая данные JSON (я не уверен, что это данные JSON ..) для получения новых данных?

Благодаря!

Solutions Collecting From Web of "Как работает периодическая почтовая рассылка Gmail?"

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

Одним из решений для этого является использование метода, называемого длинным опросом ajax (известный другими как «комета» или «обратный аякс»). С помощью этой технологии браузер выполняет длинный запрос ajax, который не возвращается до тех пор, пока не появятся новые данные. Этот запрос находится на сервере (вам нужно запустить специальное программное обеспечение на стороне сервера, чтобы обрабатывать его масштабируемым образом, но вы могли бы взломать что-то вместе с php в качестве демонстрации), пока не появятся новые данные, после чего он вернется к клиенту с помощью новые данные. Когда клиент получает данные, он делает еще один длинный запрос опроса, чтобы сидеть на сервере, пока не появится больше данных. Я считаю, что это метод, который использует gmail.

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

Реализация сервера на стороне гораздо сложнее, чем на стороне клиента (клиентская сторона требует всего несколько строк js).

Хотя я не уверен в точности реализации gmail, на сайте AjaxPatterns есть хороший обзор того, что они дублируют Периодическое обновление : -> http://ajaxpatterns.org/Periodic_Refresh . Я всегда упоминал стиль как сердцебиение .

Суть их решения такова:

Браузер периодически выдает вызов XMLHttpRequest для получения новой информации, например, один вызов каждые пять секунд. В решении используются возможности браузера « Планирование событий» , чтобы обеспечить возможность информирования пользователя о последних изменениях.

Они включают некоторые ссылки на реальные примеры и пример кода.