Jakie konkretne przypadki użycia wymagają BOSH nad WebSockets i long-ankiet? [zamknięte]

BOSH jest...

Protokół transportowy, który emuluje semantykę długotrwałego, dwukierunkowego połączenia TCP między dwoma podmiotami (takimi jak klient i serwer) poprzez efektywne wykorzystanie wielu synchronicznych par żądań/odpowiedzi HTTP bez konieczności stosowania częstych ankiet lub chunked odpowiedzi.

To brzmi jakWebSockets i HTTP long-polling z tym, że używa dwóch otwartych połączeń HTTP zamiast jednego i nie rozszerza Protokół HTTP.

Jakie są różnice między tymi dwoma protokołami i jaki przypadek użycia wolałby WebSockets niż BOSH?

Author: ruffin, 2011-06-22

1 answers

Najpierw pozwól mi zająć się gotowością WebSockets :

Implementacja protokołu Hixie-76 jest dostarczana i domyślnie włączona w przeglądarkach Chrome, Safari i iOS (iPhone i iPad). Protokół Hixie-76 jest również dostarczany, ale domyślnie wyłączony w Firefoksie 4 i operze 11. Projekt web-socket-js jest Flash shim/polyfill, który dodaje obsługę WebSocket (Hixie-76) do każdej przeglądarki z Flashem.

Innymi słowy, WebSockets jest dostępny dla prawie każdego przeglądarka w dziczy.

Powodem, dla którego Opera i Mozilla zdecydowały się domyślnie wyłączyć protokół, jest teoretyczna obawa, że mogą istnieć uszkodzone proxy/pośrednicy HTTP, które mogą zostać zaatakowane / zatrute przy użyciu wersji Hixie protokołu. Ta sama troska dotyczy Flasha, ale Mozilla i Opera odczuwały wyższy obowiązek odpowiedzialności za kod, który wysyłają. Wersje protokołu HyBi (protokół został przeniesiony do grupy roboczej IETF HyBi) odnoszą się do sprawa bezpieczeństwa.

Mozilla, Opera, Google i Microsoft pracują nad implementacjami protokołu HyBi (chociaż Microsoft utrzymuje je jako oddzielny plik do pobrania na razie). Istnieje gałąź web-socket-js z obsługą HyBi-07.

Aktualizacja: od lutego 2013 roku najnowsza Specyfikacja HyBi/IETF RFC 6455 spec jest obsługiwana przez Chrome 14, Firefox 7, IE10, operę 12.1, Safari 6.0 oraz przez web-socket-js Flash shim/polyfill. Na komórkę urządzenia IETF6455 jest obsługiwany przez Safari na iOS 6.0, Opera Mobile 12.1, Chrome 14 dla Androida, Firefox 7 dla Androida i Blackberry 7. Oryginalna domyślna przeglądarka Android nie ma żadnej obsługi WebSocket.

Serwery WebSocket są łatwe do wdrożenia. Istnieje wiele implementacji autonomicznych i wtyczek, z których większość obsługuje zarówno protokół Hixie-76, jak i protokół HyBi wersje:

BOSH vs WebSockets :

  • opóźnienie : Podczas gdy projekt dokumentu BOSH twierdzi, że bardzo niskie opóźnienia, BOSH będzie trudno konkurować z Websocketami. O ile nie masz idealnych warunków, w których HTTP/1.1 jest wspierany przez wszystkich pośredników i serwer docelowy, klient BOSH i menedżer połączeń będą musieli ponownie nawiązywać połączenia po każdym pakiecie i każdym limicie czasu żądania. To znacznie zwiększy opóźnienie i jitter opóźnienia. Niski jitter jest często ważniejszy dla aplikacji w czasie rzeczywistym niż średnie opóźnienie. Połączenia WebSocket będą bardzo podobne pod względem latencji i jittera do połączeń raw TCP. I nawet w idealnych warunkach opóźnienie komunikacji BOSH między Klientem a serwerem (a więc w obie strony) zawsze będzie wyższe niż WebSockets: BOSH nadal musi przestrzegać semantyki żądania-odpowiedzi HTTP. Streaming HTTP umożliwia wielokrotne odpowiedzi na żądanie (dzieląc "pojedynczą" odpowiedź na wiele części), ale nie odwrotnie (każda wiadomość klienta jest nowym żądaniem).
  • Small-packet overhead : w WebSockets istnieją dwa bajty kadrowania dla małych wiadomości. W BOSH każda wiadomość ma nagłówki żądań HTTP i odpowiedzi (łatwo 180 + bajtów dla każdej podróży w obie strony). Ponadto każda wiadomość jest owinięta w XML (rzekomo opcjonalny, ale specyfikacja nie definiuje jak) z kilkoma atrybutami związanymi z sesją.
  • complexity : podczas gdy BOSH używa istniejących mechanizmów w przeglądarce, wymaga umiarkowanie złożonej biblioteki JavaScript do implementacji semantyki BOSH. Zarządzanie tym w Javascript zwiększy również opóźnienia i jitter w porównaniu do implementacji natywnej / przeglądarki (lub nawet Flasha).
  • traction : BOSH rozpoczął życie jako sposób na zwiększenie wydajności XMPP. Wyrosła ze społeczności XMPP i z tego, co mogę powiedzieć, ma bardzo małą przyczepność poza tą społecznością. Szkice dokumentów dla BOSH i XMPP są podzielone, ale wydaje się, że użycie BOSH w świecie rzeczywistym jest bardzo małe bez XMPP.

Update :

Just znalazłem film, w którym Ian Fette omawia zalety WebSockets nad Kanałem API, który jest podobny do BOSH (w 44:00)

 101
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
2013-03-08 14:00:30