Как работает автосохранение документов Google?
хорошо, я знаю, что это звучит обобщенно. Но я имею в виду на уровне AJAX. Я пробовал использовать Firebug для отслеживания сетевых соединений и сообщений, и это загадка. Кто-нибудь знает, как они делают мгновенное автосохранение постоянно, не разрушая сеть / браузер?
1 ответов
Я предполагаю (и это только предположение), что google использует PUSH-сервис. Это кажется наиболее жизнеспособным вариантом, учитывая, что их чат-клиент (который также интегрирован в окно) также использует это для доставки сообщений "в реальном времени" с минимальной задержкой.
Я держу пари, что у них есть целая настройка, которая управляет всем, что связано с подключением, и отправляет флаги для запуска определенных элементов. Вы не увидите триггеры соединения, потому что начальное посещение страницы устанавливает соединение просто зависает на все время, пока у вас открыта страница. например,
- вы посетите страницу
- браузер установил соединение с [примером]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.
опять это только предположение.
--
чтобы доказать это, Используйте что-то вроде ethereal и посмотрите, можете ли вы видеть передачу информации в фоновом режиме.