2012-12-27 4 views
9

Wiem, że możemy to zrobić, odpytując o zmiany w regularnych odstępach czasu. A to można osiągnąć dzięki AJAX (na przykład używając jQuery.load() wraz z setInterval()).Wprowadzanie zmian na stronie internetowej bez odświeżania

Ale chcę wiedzieć, czy istnieją inne metody, aby to zrobić? Inne mniej kosztowne metody lub bardziej wydajne metody? Jaką logikę kieruje niesamowity klient czatu? Jak tylko zaczniesz pisać, drugi koniec dowie się, że piszesz.

Jaki mechanizm śledzimy tutaj na stackoverflow, aby zaktualizować liczbę pobrań lub pokazać, że dokonano edycji itp. Bez odświeżania strony?

+0

tutaj jest pytanie Pytałem jakiś czas temu http://stackoverflow.com/questions/13666872/php-chat-application-questions – BLOB

+2

To może być dobry start: http://www.google.com/search?q=google+comet+programming –

+0

Dziękuję Pranav, też to wiedziałem :) Skype, gtalk itd. używają tej samej techniki, czy istnieją inne sposoby ? – Amar

Odpowiedz

16

Gdy chodzi o utrzymanie klienta i serwera w synchronizacji w (prawie) w czasie rzeczywistym, są 3 rzeczy, które od razu przychodzą na myśl:

  • długo sondowania: ty już o tym wspominałem jeden, w którym ustawiłeś zegar na kliencie, który uruchamia nowe żądanie AJAX co 10 sekund. Jest to prawdopodobnie najbardziej "low tech" z 3, a także najmniej wydajne; Ale jest to również najbardziej kompatybilny (czyli będzie działać we wszystkich przeglądarkach, nawet takie rzeczy jak IE6/7)

  • WebSockets: sdespont już wspomniano ten w komentarzach. Podczas gdy WebSockets jest bardziej wydajny niż długo-polling (ponieważ utrzymuje on tylko dwukierunkową komunikację między klientem a serwerem w nieskończoność), może być bardzo ciężkim rozwiązaniem, jeśli wszystko, co próbujesz zrobić, to otrzymywać regularne aktualizacje z serwera. Wszystkie wersje z Firefox i Chrome wspierać go, and IE added support in IE10

  • zdarzenia wysłano Server: ta wydaje się być mniej popularne (lub po prostu nie jest tak dobrze znany). Umożliwia to serwerowi wysyłanie zmian do klienta (w przeciwieństwie do klienta żądającego zmian z serwera, tak jak w przypadku długiego pobierania). Jest to również tylko komunikacja jednokierunkowa (serwer -> klient), a połączenie zostaje zamknięte po zakończeniu żądania (w przeciwieństwie do witryn internetowych, w których komunikacja dwukierunkowa pozostaje otwarta). Po raz kolejny, nie wszystkie przeglądarki obsługują go and there is no IE support at all

This to również dobry artykuł, który wyjaśnia różnicę między bardziej nowoczesnych sposobów komunikacji klient-serwer. A jeśli chcesz uzyskać więcej informacji na temat zdarzeń serwera wysłane this is a good write up