Moje zrozumienie odpytywania HTTP, długiego odpytywania, strumieniowania HTTP i gniazd sieciowych

Przeczytałem wiele postów na temat SO i internetu dotyczących słów kluczowych w tytule pytania i wiele się od nich nauczyłem. Niektóre z pytań, które czytam, dotyczą konkretnych wyzwań związanych z implementacją, podczas gdy inne skupiają się na ogólnych pojęciach. Chcę tylko upewnić się, że zrozumiałem wszystkie koncepcje i rozumowanie, dlaczego technologia X została wynaleziona w technologii Y i tak dalej. Więc tutaj:

Http Polling: Zasadniczo AJAX, używając XmlHttpRequest.

Http Long Polling: AJAX, ale serwer trzyma się odpowiedzi, chyba że serwer ma aktualizację, gdy tylko serwer ma aktualizację, wysyła go, a następnie klient może wysłać kolejne żądanie. Wadą są dodatkowe dane nagłówka, które muszą być przesyłane tam iz powrotem, powodując dodatkowy narzut.

Streaming HTTP: Podobnie jak w przypadku długiego odpytywania, ale serwer odpowiada nagłówkiem z „Transfer Encoding: chunked”, a zatem nie musimy inicjować nowego żądania za każdym razem, gdy serwer wysyła pewne dane (a zatem zapisuje dodatkowy nagłówek). Wadą jest to, że musimy „zrozumieć” i ustalić strukturę danych, aby odróżnić wiele porcji wysyłanych przez serwer.

Aplet Java, Flash, Silverlight: Zapewniają możliwość łączenia się z serwerami gniazd za pomocą tcp / ip, ale ponieważ są to wtyczki, programiści nie chcą na nich polegać.

WebSockets: są nowym interfejsem API, który próbuje wyeliminować niedociągnięcia powyższych metod w następujący sposób:

Jedyną zaletą WebSockets w stosunku do wtyczek, takich jak aplety Java, Flash lub Silverlight, jest to, że WebSockets są wbudowane natywnie w przeglądarki i nie polegają na wtyczkach.Jedyną zaletą WebSockets w stosunku do strumieniowania HTTP jest to, że nie musisz starać się „zrozumieć” i przeanalizować otrzymanych danych.Jedyną zaletą WebSockets w porównaniu z Long Pollingiem jest eliminacja dodatkowego rozmiaru nagłówków oraz otwieranie i zamykanie połączenia gniazda na żądanie.

Czy są jakieś inne istotne różnice, których brakuje? Przykro mi, jeśli ponownie zadaję lub łączę wiele pytań już w sprawie SO w jedno pytanie, ale chcę po prostu doskonale zrozumieć wszystkie informacje, które są dostępne na SO i w sieci w odniesieniu do tych pojęć.

Dzięki!

questionAnswers(4)

yourAnswerToTheQuestion