2011-09-26 9 views
6

Przez wiele dni eksperymentowałem z wdrożeniem długich pollingów/komet dla mojej witryny. Mam podstawowy pomysł, jak to działa, this is where i run some tests.Moja własna długa implementacja pollingu w porównaniu z Facebookiem i Gmailem

Z drugiej strony, obserwowałem (firebug), w jaki sposób Gmail i Facebook realizują długi głosowanie. To, co zauważyłem w Gmailu, to to, że żądanie ajax nie następuje w sposób ciągły zaraz po wygaśnięciu bieżącego żądania, ale czeka kilka sekund na minutę, zanim uruchomi następne.

Grałem z tym trochę więcej. Próbowałem zalogować się za pomocą konta gmail A na koncie Firefox i Gmail B w chrome. Czekałem, kiedy skończy się aktualna ankieta ajaxowa, a następnie wysłałem e-mail z konta B do A. Spodziewałem się, że konto A nie otrzyma go do następnej ankiety, ale ku mojemu zaskoczeniu Konto A otrzymało je bezpośrednio po tym, jak uderzyłem przycisk przesyłania.

W jaki sposób Gmail robi to z długim sondowaniem?

Jeśli spróbujesz odwiedzić moją witrynę i klikniesz przycisk Uruchom i otwórz firebug, zobaczysz, że odtwarzacz ajax zawsze działa. kiedy serwer odpowiada danymi, żąda serwera ponownie.

Odpowiedz

1

Sądzę, że Twoje założenie, że Gmail wykorzystuje (tylko) długi głosowanie, jest nieprawidłowe. Zgodnie z this question (i odpowiedź) korzysta z ramki na zawsze i na zawsze XHR. Zobacz także BrowserChannel, których używają do czatu w Gmailu.

+0

dziękuję za linki, będę wykopał trochę więcej informacji – pneftali

+0

Możesz być także zainteresowany [kodem socket.io] (https: // github. com/learnboost/socket.io) – HyderA

1

Spójrz na WebSync z Frozenmountain lub SignalIR, które wykonują pracę z zabezpieczonych kawałków. Mogę ręczyć za websync, ponieważ używam go codziennie, ale słyszałem dobre rzeczy o signalir.

+0

Mam pobraną wersję bezpłatną. ale muszę najpierw dowiedzieć się więcej o podstawach, dziękuję :) – pneftali