Czy Comet jest już przestarzały z wysyłanymi przez serwer zdarzeniami i WebSocket? [zamknięte]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it edytując ten post.

Zamknięte 7 lat temu .

Popraw to pytanie

A może wysyłane przez serwer zdarzenia i WebSocket zastępują techniki Comet?

Author: Jonas, 2012-08-22

4 answers

Comet jest zestawem zasad technologii/wzorców komunikacyjnych, które są zazwyczaj implementowane przy użyciu protokołu HTTP long-poll. Umożliwia serwerowi wysyłanie danych do przeglądarki na żądanie (np. Server push). Obecne implementacje comet wymagają skomplikowanego Javascript po stronie klienta i wsparcia ze strony serwera (dla długotrwałych żądań).

Server-Sent Events jest standardowym (HTML5) API przeglądarki do włączania tego rodzaju push serwera na żądanie. You can think of Zdarzenia wysyłane przez serwer jako wzięcie tego, co zostało zrobione ze złożonym Javascript i wypchnięcie go w dół do samej przeglądarki.

WebSockets pozwala przeglądarce ustanowić trwałe połączenie full-duplex / dwukierunkowe z serwerem z obsługą WebSocket. Nie wymaga od klienta ciągłego wykonywania okresowych żądań HTTP do serwera w celu utrzymania połączenia tak jak w przypadku AJAX/long-poll. Po nawiązaniu połączenia narzut na wiadomość jest bardzo niski (kilka bajtów) w porównaniu do napowietrznych z normalnym HTTP / HTTP long-poll. Możesz użyć WebSockets do wydajnego Server push, ale to tylko jedna aplikacja.

Istnieją również biblioteki, które budują się na warstwie transportowej AJAX / comet / WebSockets, aby zapewnić takie rzeczy jak zarządzanie sesjami, kanały, transmisje, pubsub itp. CometD jest tego przykładem. Innym popularnym przykładem jest Socket.IO. oba obsługują WebSockets, jeśli jest dostępny dla podstawowego transportu, ale obsługuje również standard AJAX / long-poll, jeśli WebSockets nie jest dostępny.

 15
Author: kanaka,
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-08-22 18:58:12

Podchodzę do tej odpowiedzi zarówno z perspektywy terminologicznej, jak i historycznej.

Jak pisałem w tej innej odpowiedzi , możemy użyć jednego z kilku pojęć parasolowych w odniesieniu do zestawu technologii dostępnych do asynchronicznie wysyłania zdarzeń z serwera www do klienta WWW (i odwrotnie). Termin "technologia Push " jest używany od piętnastu lat (dla krótkiej historii technologii Push możesz zobaczyć ten stary biały papier napisałem wiele lat temu-pełna ujawnienie: jestem twórcą Lightstreamer). Obecnie termin "web Streaming "zyskuje konsensus wśród analityków IT (patrz Gartner, " Cool Vendors in Application and Integration Platforms, 2012", Massimo Pezzini i Jess Thompson, 11 kwietnia 2012).

Ważnym aspektem jest to, że mówimy o komunikacji internetowej, czyli wykorzystywaniu protokołów internetowych. Istnieje mnóstwo protokołów i technologii przesyłania wiadomości, które nie są oparte na sieci (większość MOMs, na przykład) i robimy nie traktuj ich jako część technologii Push (lub streamingu internetowego).

Biorąc to pod uwagę, można wyróżnić dwie podkategorie technologii Push (lub streamingu internetowego):

  • HTTP na podstawie
  • WebSockets na podstawie

Zarówno HTTP, jak i WebSockets są protokołami sieciowymi.

Jeśli eksplodujesz mechanizmy push oparte na HTTP, możesz zidentyfikować:

  • Streaming HTTP
  • http Long Ankieta
  • ankieta HTTP

Tradycyjnie termin" Kometa " (ukuty w 2006 Alex Russell) odnosi się zarówno do streamingu HTTP, jak i sondowania HTTP. Ale weź pod uwagę, że pierwsze implementacje streamingu HTTP sięgają 2000, na długo przed pojęciem komety (przykładami są Pushlets i Lightstreamer).

Teraz WebSockets ułatwiają implementację streamingu internetowego, szczególnie dla kanału "wstecz" (wiadomości wysyłane z przeglądarki na serwer). Aby uzyskać bardziej szczegółowe wyjaśnienie specyfiki kanału wstecznego przez HTTP, Zobacz ostatnią część tego artykułu, który napisałem dla CometDaily: http://cometdaily.com/2011/07/06/push-technology-comet-and-websockets-10-years-of-history-from-lightstreamers-perspective/

Jak zauważył Phil, Comet jest nadal potrzebny i prawdopodobnie będzie jeszcze przez kilka lat, ponieważ wokół są nie tylko stare przeglądarki (w tym IE9, który nie wsparcie WebSockets...), ale także nieskończone kawałki pośredników sieciowych, które nie mówią WS. Na przykład widzieliśmy, że niektórzy przewoźnicy komórkowi w niektórych krajach (na przykład Vodafone Włochy) wspierają WSS, ale blokują WS. Tak więc świat bez komety "hacki" jest jeszcze daleko... i dodam, na osobistą uwagę, że nigdy nie podobał mi się termin "hack" stosowany do komety (lub, z bardziej poprawnego historycznego punktu widzenia, stosowane do HTTP Streaming i HTTP Long Polling). Pracując nad tymi techniki od 12 lat możemy powiedzieć, że udało nam się je udoskonalić tak bardzo, że same stały się pełnoprawną technologią, całkowicie niezawodną i używaną każdego dnia w wielu krytycznych scenariuszach produkcji (w finansach, lotnictwie i wojsku, by wymienić kilka branż).

Wyobraźmy sobie teraz świat, w którym WebSockets są powszechnie wspierane i Kometa nie jest już potrzebna. Co dokładnie dostajesz? Cóż, tylko dwukierunkowy transport, nic więcej... Na wierzchu potrzebujesz aby zbudować wszystko: protokół komunikacyjny (być może oparty na pub/sub), interfejs po stronie serwera do rozmowy z kodem serwera oraz dobry zestaw technik optymalizacji i algorytmów do zarządzania przepływem danych, w tym zarządzanie przepustowością, konflacja danych, automatyczne Dławienie, delta delivery itp. Dobrą rzeczą jest to, że zarówno protokoły przesyłania wiadomości, jak i mechanizmy optymalizacji zostały już wdrożone przez dobre rozwiązania Comet. Tak więc rozszerzenie dotychczasowych serwerów Comet o obsługę WebSocket jest naturalna ewolucja, którą wszyscy dostawcy wdrożyli.

W skrócie, w niedalekiej przyszłości WebSockets może sprawić, że transporty Comet staną się przestarzałe, ale będą musiały wciągać wszystkie wyższe warstwy już zaimplementowane i dobrze przetestowane na tradycyjnych serwerach Comet.

 20
Author: Alessandro Alinone,
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
2019-09-11 19:17:46

Początkowo myślałem, że WebSockets uświadamiają sobie kometę. Nie są alternatywą . Jednak po pewnej dyskusji zostałem później poprawiony i przekonany przez Alexa Russella, twórcę "komety", że tak nie było.

Comet, jak mówi @kanaka, jest zbiorem zasad symulowania dwukierunkowej komunikacji między Klientem a serwerem (server push to połowa rozwiązania i jest teraz dostarczany przez zdarzenia wysłane przez serwer i źródło zdarzeń API).

Jednak, Rozwiązania Comet są hackami, ponieważ działają niekonsekwentnie w przeglądarkach internetowych. Z tego powodu Alex Russell mówi:

Dalej, Czy Gniazda Sieciowe to forma komety? A może Kometa to tylko hacki HTTP? Pójdę za tą drugą definicją. Fraza i hacki powinny jechać razem w stronę zachodu Słońca. Ja, na przykład, Witam naszych Nie-HTTP realtime overlords. Do tego stopnia, że możemy zapomnieć o starych przeglądarkach (i Bóg wie, że robię swoje: http://google.com/chromeframe ), wszyscy możemy wejść na pokład z "gniazdkami sieciowymi" i potrzeba konkretnego parasola znika.

Więc skupmy się na tym: jak wprowadzić użytkowników do lśniącego nowego samochodu przeglądarki? Jaką ofertę możemy im zaoferować o bogactwie i doświadczeniach w czasie rzeczywistym, jakie może dostarczyć aplikacja oparta na WebSockets? Kometa jest o przeszłości. Uczyńmy przyszłość realną.

Jestem teraz z Alexem w tej sprawie. Jednak rozwiązania Comet-HTTP-nie są stanie się przestarzały do:

  1. Obsługa przeglądarki jest 100% i nie potrzebujemy zastępczych dla
  2. producenci antywirusów (np. Avast!) rozpocząć obsługę technologii internetowych HTML5 i zatrzymać ich oprogramowanie zakłócające łączność.
  3. [[21]} Trochę Internetu Infrastruktura jest aktualizowana w celu zapewnienia obsługi WebSockets. W moich doświadczeniach podłączony przez WSS przez port 443 (bezpieczne połączenie WebSocket) zwykle oznacza połączenia przejść przez firewalle i proxy, ale chcemy WS przez port 80 zawsze być obsługiwane zbyt.
 10
Author: leggetter,
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-08-22 21:38:02

Podczas gdy WebSocket zapewnia na najbardziej podstawowym poziomie sposób komunikacji dwukierunkowej między Klientem a serwerem w kontekście sieci i HTTP, jest to prosta forma komunikacji.

Comet zapewnia większą funkcjonalność na szczycie WebSocket( w rzeczywistości cometd obsługuje nawet websocket), dla funkcji:

  • jak publikować / subskrybować i kanały komunikacji
  • Powrót do starszych technik komunikacji klienta serwera, gdy websocket jest unvailable
 0
Author: Joakim Erdfelt,
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-08-22 18:17:52