Как работает автосохранение Google Docs? - PullRequest
8 голосов
/ 25 мая 2011

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

1 Ответ

8 голосов
/ 25 мая 2011

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

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

  1. Вы посещаете страницу
    • Браузер установил соединение с [example] 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.

Опять же, это всего лишь предположение .

-

Чтобы доказать это, используйте что-то вроде эфирного и посмотрите, сможете ли вы увидеть передачу информации на заднем плане.

...