Jak działa Gmail w Operze?

Chciałbym się dowiedzieć jak Gmail (lub ktoś inny) radzi sobie z Operą.

Oto, co wiem tak daleko od moich eksperymentów.

  1. nie używa znacznika event-source , który jest uszkodzony w Operze 10.51.
  2. nie używa iframe, który wyświetla obracający się Pulsator i zajęty kursor myszy.
  3. nie używa responseText na xmlhttprequest, gdy readyState = 3, który jest znany jako złamany w Operze.

Próbowałem zobaczyć jak to się robi w mibbit i etherpad, i okazało się, że obaj używają długich sondaży.

Bounty

Nagroda trafia do tego, kto może mi powiedzieć metodę lepszą niż "event-source" do streamingu Opera comet, lub jak Gmail robi streaming (lub long-polling, jeśli tak robi).

Author: Unknown, 2010-04-17

4 answers

GMail używa BrowserChannel (Docs | Źródło), które znajduje się w Bibliotece zamkniętej Google .

  • @ fileoverview definicja klasy BrowserChannel. BrowserChannel
  • symuluje dwukierunkowe Gniazdo przez HTTP. Jest podstawą
  • Gmail Chat połączenia IM z serwerem.
 9
Author: Jason Hall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-19 19:27:47

Naprawdę nie mam pojęcia, jaka jest odpowiedź. Ale wiem, że Opera obsługuje server-events: http://my.opera.com/WebApplications/blog/show.dml/438711 . Może to krok w kierunku anwsera? Też nie jestem pewien, ale myślę, że używają go w Operze Unite.

 0
Author: Savageman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-17 22:59:31

Myślę, że raczej cross-browser (w tym Opera) podejście może być do przesyłania danych przez aplikację Adobe Flash. Chociaż wprowadzi zależność od wtyczki Flash i nie jest bardzo popularny z tego powodu.

 0
Author: newtover,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-25 12:59:53

Jestem autorem in progess C++ HTTP server, który jest kompatybilny z goog.netBrowserChannel. Możesz znaleźć dokumenty, które napisałem podczas studiowania protokołu tutaj:

Http://code.google.com/p/libevent-browserchannel-server/wiki/BrowserChannelProtocol

Krótko mówiąc, BrowserChannel używa ramek forever w IE i XHR streaming we wszystkich innych przeglądarkach. Protokół jest podzielony na kilka faz, z których pierwsza to testowanie sieci:

1) przetestuj sieć w celu zapewnienia obsługi "strumieniowania" odpowiedzi (innymi słowy nie istnieje serwer proxy buforujący)
2) Sprawdź dostęp do różnych prefiksów sieciowych (aby upewnić się, że administrator sieci nie zablokował dostępu do czatu)

Wtedy można rozpocząć rzeczywistą transmisję danych. Dane są podzielone na dwa kanały (do przodu i do tyłu). Kanał tylny to seria długotrwałych (około 4 minut każdy) żądań używanych przez serwer do "strumieniowania" treści do klienta. W tym celu używane jest kodowanie http. Na klient robi to najlepiej upewnić się, że jeden backchannel jest zawsze otwarty. Serwer zamknie go co około 4 minuty, po czym klient otworzy nowy backchannel. Kanał forward służy do przesyłania danych z Klienta do serwera. Takie przesyłanie danych odbywa się w razie potrzeby.

 0
Author: ahochhaus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-27 01:22:55