Как Gmail реализует Комету?

С помощью HttpWatch я пытался выяснить, как Gmail реализует Комету.

Я вхожу в в Gmail с двумя учетными записями, один в IE и другом в Firefox. Обсуждение в GTalk в Gmail с некоторыми волшебными словами как "WASSUP". Затем я выхожу из системы обе учетных записи Gmail, фильтрую любое http содержание без строки "WASSUP". Шоу результата, какой Запрос HTTP является каналом потоковой передачи. (Отметьте: Я должен выйти из системы. Иначе бесконечный HTTP не показал бы содержание в HttpWatch.)

Результат интересен. URL для речного русла похож:

https://отправляют по почте/направляют/связывают? VER=8&at=xn3j33vcvk39lkfq.....

Там не удивителен, что Gmail делает Комету в IE с IFRAME. Содержание Http запускается с"".

Первоначально, я предположил, что Gmail делает Комету в Firefox с многослойным XmlHttpRequest. К моему удивлению заголовок ответа не имеет "multipart/x-mixed-replace" заголовка. Заголовки ответа как указано ниже:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Sat, 20 Mar 2010 01:52:39 GMT
X-Frame-Options: ALLOWALL
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
Server: GSE
X-XSS-Protection: 0

К сожалению, HttpWatch не сообщает, является ли Запрос HTTP от XmlHttpRequest или нет. Содержанием не является HTML, но JSON. Это похоже на ответ для XHR, но это не работало бы на Комету без multipart/x-mixed-replace, правильно?

Там какой-либо путь состоит в том, чтобы еще выяснить, как Gmail реализует Комету?

Обновление: После дальнейшего расследования я полагаю, что Gmail реализует Комету этот путь: 1) в IE, это использует forever-hidden-iframe; 2) в Firefox, это использует навсегда-XHR без multipart/x-mixed-replace заголовка. Клиент будет ответ в условии (readyState == 3) ИЛИ (readyState == 4). Таким образом, и в интерактивном состоянии и в полном состоянии.

14
задан Morgan Cheng 20 March 2010 в 11:45
поделиться

1 ответ

Согласно этой статье,

Так какое же решение использует Google? Gmail?

Решение действительно простое, прямолинейное и очень портативное! Что сделал Gmail, так это запросил бесконечную html-страницу, которая содержит потоки порций Javascript. Попробуйте попробуйте, это очень мощно. Итак, мы будем иметь на стороне клиента js-файл. который обрабатывает ответы, и другой бесконечный html, который содержит Javascript Streams.

Остальная часть статьи описывает гораздо больше деталей, включая исследование альтернатив, а также конкретный вариант, выбранный GMail.

15
ответ дан 1 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: