2010-03-13 17 views

Odpowiedz

14

Na razie długi głosowanie jest prawdopodobnie najlepszym rozwiązaniem. Wiele popularnych witryn ma długie wdrożenia pollingu, w tym Facebook, Google i eBay. Nie każdy ma zainstalowany/włączony Flash w swoich przeglądarkach. W przyszłości Web Sockets może nam ułatwić to zadanie.

Aktualizacja: W tej piśmie, WebSocket API jest zaimplementowana w najnowszej WebKit (Chrome/Safari) i Firefox 4 beta. Istnieje również publiczna kompilacja migawki Opery available for download z implementacją API. Oznacza to, że testowanie API jest szeroko dostępne. Aby uzyskać więcej informacji, zobacz this answer.

+0

+1 Lubię długi głosowanie. Przyszłość może być inna, ale nie pójdę z Flash. – Plynx

+0

Użyłem phpfreechat (który używa długiego sondowania) i tylko z 20 osobami jest bardzo, bardzo, bardzo powolny !! Czemu ? Potrzebuję stworzyć aplikację czasu rzeczywistego dla milionów ludzi jednocześnie !! – xRobot

+2

@xRobot: Czy sprawdziłeś najczęściej zadawane pytania? [http://www.phpfreechat.net/faq] Oferuje rozwiązanie jednego problemu dotyczącego wydajności związanego z dostępem do dysku. Poza tym potrzebujesz bardzo wydajnego serwera do obsługi milionów połączeń w tym samym czasie. Normalne żądania http są otwarte-> pobierz dane-> zamknij, więc połączenia jednoczesne są mniej. Po długim odpytywaniu jest otwarty-> czekaj na dane-> zamknij, więc wiele jednoczesnych jest prawie gwarantowanych. Serwery mogą obsługiwać ograniczoną liczbę równoczesnych połączeń, a otrzymasz to, za co zapłacisz, jeśli złapiesz mój dryf! –

1

Nie sądzę, że długo odpytywanie jest najskuteczniejszym sposobem na wykonanie komety. W każdym razie wysyła nowe żądanie HTTP po otrzymaniu odpowiedzi. Kosztuje więcej dodatkowych żądań HTTP niż strumieniowanie HTTP.

Jednak długo-głosowanie może być bardziej niezawodne i łatwiejsze do wdrożenia niż strumieniowanie HTTP. Zgodnie z tym article in Google Code strumieniowanie HTTP może nie działać, jeśli pośredni proxy HTTP buforuje zawartość.

Interesujące jest to, że Gmail nie korzysta z długiego głosowania. Dzięki snifferowi Http jasne jest, że używa on strumieniowania HTTP dla Cometa.

+0

Również Facebook nie używa długiego sondowania? Czy znasz jakiś przykład strumieniowania http? Niż^_^ – xRobot

+0

Nie przetestowałem go osobiście, ale powiedziano mi, że czat na Facebooku jest realizowany przez długi głosowanie. Gmail jest Http Streaming. Podobnie jest z Outlook Web Access. –

+0

@Robot, jeśli nie możesz się doczekać, jak to zrobić, ten URL jest dobrym podsumowaniem: http://cometdaily.com/2007/12/11/the-future-of-comet-part-1-comet-today/ –

4

Wszystkie różne metody mają inne zalety i wady, nie jestem specjalistą od różnic, dlatego polecam Ci unikaj wyboru, unikaj opracowywania i dostrajania, z którymi wiąże się każde podejście, unikaj przyszłe zmiany w dostępnych technologii (czyli jak HTML5 gniazd internetowych przyjazdu.), przy użyciu biblioteki, które Abstracts metoda transportu wykorzystywane i wybiera najlepsze podejście oparte na możliwościach klient:

http://socket.io/

ta wspaniała biblioteka sprawia, że ​​tworzenie aplikacji czasu rzeczywistego zdumiewająco imple! i istnieją różne implementacje po stronie serwera: Python (Tornado), Java, Google GO, Rack (Ruby), oprócz głównej implementacji w Node.js (JavaScript po stronie serwera)

+0

Yup .. !! Używałem go już zarówno z Javą, jak i NodeJS. jego genialne narzędzie. Dla java możemy użyć implementacji serwera Netty. – agpt