Мне кажется (и это только предположение), что Google использует PUSH-сервис.Это кажется наиболее приемлемым вариантом, учитывая, что их клиент чата (который также интегрирован в окно) также использует его для доставки сообщений в режиме реального времени с минимальной задержкой.
Держу пари, у них есть целая настройка, котораяуправляет всем, что связано с соединением, и отправляет флаги для запуска определенных элементов.Вы не увидите триггеры соединения, потому что при первом посещении страницы устанавливается соединение, а затем просто зависает все время, пока у вас открыта страница.например,
- Вы посещаете страницу
- Браузер установил соединение с [example] api.docs.google.com [/ example] и остается открытым
- Затем код на стороне клиента отправляет различные команды и получает набор ответов.
- Эти команды отправляются взад и вперед до тех пор, пока вы не выполните одно из следующих действий:
- Потеря соединения (тайм-аут,и т. д.) в этом случае оно восстанавливается
- Окно браузера закрывается
Пример, как я вижу, типичного сообщения:
SERVER: CLIENT:
------- -------
DOC_FETCH mydocument.doc
DOC_CONTENT mydocument.doc 15616 ...
DOC_AUTOSAVE mydocument.doc 24335 ...
IM collaboratorName Hi Joe!
IM_OK collaboratorName OK
AUTOSAVE_OK mydocument.doc OK
Где команда DOC_FETCH
говорит, что я хочу данные.Сервер отвечает с соответствующим DOC_CONTENT <docname> <length> <contents>
.Затем клиент запускает DOC_AUTOSAVE <docname> <length> <content>
.Учитывая количество потенциальных одновременных запросов, я бы поспорил, что они сохраняют «контекст» в запросах / ответах, чтобы после отправки чего-либо это можно было сопоставить.В этом примере он знает, что IM_OK
соответствует второму запросу (IM
), а AUTOSAVE_OK
соответствует первому запросу (AUTOSAVE
) - что-то вроде того, как работает протокол IM AOL.
Опять же, это всего лишь предположение .
-
Чтобы доказать это, используйте что-то вроде эфирного и посмотрите, сможете ли вы увидеть передачу информации на заднем плане.