Как работает автосохранение документов Google?

хорошо, я знаю, что это звучит обобщенно. Но я имею в виду на уровне AJAX. Я пробовал использовать Firebug для отслеживания сетевых соединений и сообщений, и это загадка. Кто-нибудь знает, как они делают мгновенное автосохранение постоянно, не разрушая сеть / браузер?

1 ответов


Я предполагаю (и это только предположение), что google использует PUSH-сервис. Это кажется наиболее жизнеспособным вариантом, учитывая, что их чат-клиент (который также интегрирован в окно) также использует это для доставки сообщений "в реальном времени" с минимальной задержкой.

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

  1. вы посетите страницу
    • браузер установил соединение с [примером]api.docs.google.com [/example] и остается открытым
  2. затем клиентский код отправляет различные команды и получает набор ответов.
  3. эти команды отправляются туда и обратно, пока вы либо:
    • потерять связи (тайм-аут, и т. д.) в таком случае он восстановлен
    • окне браузера

пример, как я вижу, типичный сообщения:

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 и посмотрите, можете ли вы видеть передачу информации в фоновом режиме.