Как GMail внедряет комету?
С помощью HttpWatch я попытался выяснить, как GMail реализует комету.
Я могу войти в GMail с двумя учетными записями, один в IE и другой в Firefox. Общение в GTalk в GMail с некоторыми волшебными словами типа "WASSUP". Затем я выхожу на учетные записи GMail, фильтрует любой контент http без строки "WASSUP". Результат показывает, какой HTTP-запрос является потоковым каналом. (Примечание: мне нужно выйти из системы. В противном случае бесконечный HTTP не будет показывать контент в HttpWatch.)
Результат интересен. URL-адрес канала потока похож:
https://mail/channel/bind?VER=8&at=xn3j33vcvk39lkfq.....
Нет ничего удивительного в том, что GMail делает комету в IE с IFRAME. Содержимое Http начинается с "<html><body>
".
Первоначально я догадался, что GMail делает Comet в 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 реализует комету?
Update:
После дальнейшего расследования я считаю, что GMail реализует Comet таким образом:
1) в IE, он использует forever-hidden-iframe;
2) в Firefox, он использует forever-XHR без заголовка multipart/x-mixed-replace. Клиент будет отвечать в conditon (readyState == 3) OR (readyState == 4). То есть, как в интерактивном состоянии, так и в полном состоянии.
Ответы
Ответ 1
Per в этой статье,
Итак, какое решение используется Google? Gmail?
Решение действительно просто, прямо и очень портативно! Что Gmail делает, запрашивая бесконечная html-страница, содержащая потоки частей Javascript. Дайте это попытка, ее очень мощная. Итак, мы будет иметь на стороне клиента файл js который обрабатывает ответы и другой бесконечный html, который содержит Потоки Javascript.
В остальной части статьи речь идет о гораздо более подробной информации, в том числе о поиске альтернатив, а также о конкретном, выбранном GMail.