#ajax #google-docs
#ajax #google-docs
Вопрос:
Хорошо, я знаю, это звучит обобщенно. Но я имею в виду на уровне AJAX. Я пытался использовать Firebug для отслеживания сетевых подключений и сообщений, но это загадка. Кто-нибудь знает, как они постоянно выполняют мгновенное автосохранение, не РАЗРУШАЯ сеть / браузер?
Комментарии:
1.
window.setInterval
с помощью AJAX и некоторых условий?2. Не уверен, что это правильно — если вы посмотрите на консоль, кажется, что она не так уж много делает
Ответ №1:
Я предполагаю (и это только предположение), что Google использует PUSH-сервис. Это кажется наиболее приемлемым вариантом, учитывая, что их чат-клиент (который также интегрирован в window) также использует это для доставки сообщений «в реальном времени» с минимальной задержкой.
Держу пари, у них есть целая настройка, которая управляет всем, что связано с подключением, и отправляет флаги для запуска определенных элементов. Вы не увидите триггеры подключения, потому что при первом посещении страницы соединение устанавливается, а затем просто зависает на все время, пока страница открыта. например
- Вы посещаете страницу
- Браузер установил соединение с [примером]api.docs.google.com [/ пример] и остается открытым
- Затем клиентский код отправляет различные команды и получает множество ответов.
- Эти команды отправляются туда и обратно, пока вы либо:
- Потеря соединения (тайм-аут и т.д.), В этом случае оно восстанавливается
- Окно браузера закрыто
Пример, как я вижу, типичного общения:
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
) — что-то вроде того, как работает протокол обмена мгновенными сообщениями AOL.
Опять же, это всего лишь предположение.
—
Чтобы доказать это, используйте что-то вроде ethereal и посмотрите, можете ли вы видеть передачу информации в фоновом режиме.
Комментарии:
1. Спасибо @Brad-Christie за его ответ, однако мне не ясно, как этого добиться.