2009-09-26 24 views
8

Od this artykuł na Wikipedii:HTTP trwałe połączenie vs połączenia gniazda TCP

keepalive wiadomości nie były oficjalnie obsługiwana w protokole HTTP 1.0. W protokole HTTP 1.1 wszystkie połączenia są uznawane za trwałe, , chyba że zadeklarowano inaczej.

  • Czy to oznacza, że ​​za pomocą tego mechanizmu mogę faktycznie symulować połączenia gniazda TCP?
  • Skorzystanie z tego może spowodować, że dane "Push" na serwerze zostaną przekazane klientowi?
  • Czy są wszystkie połączenia HTTP, nawet numer , którego używam do połączenia ze stosem Przepełnienie "Trwałość HTTP"?
  • Czy technologia przesyłania danych na serwerze COMET serwera korzysta z tego mechanizmu polegającego na stałym połączeniu HTTP , aby przekazać klientom dane ?
+1

Trwałe połączenia HTTP to tylko optymalizacja. Nie ma różnicy w zachowaniu. Jeśli chcesz przesłać strumieniowo dane do klienta, możesz użyć kodowania kodowanego, jak sądzę. – derobert

+1

@derobert: co to jest kodowane kodowanie? –

Odpowiedz

8
  • Czy to oznacza, że ​​za pomocą tego mechanizmu można faktycznie symulować połączenia gniazda TCP?

Niezupełnie Gniazda mają WIELE więcej funkcji i elastyczność.

  • Używanie tego mogę serwerze „push” danych do klienta?

Nie bezpośrednio, to nadal wniosek protokół/odpowiedź; stałe połączenie oznacza po prostu, że klient może używać tego samego gniazda podstawowego do wysyłania wielu żądań i odbierania odpowiednich odpowiedzi.

  • Czy wszystkie połączenia HTTP, nawet jeden używam do łączenia w stos Overflow „HTTP trwałe”?

O ile Twoja przeglądarka (lub osobliwy serwer) nie mówi inaczej, tak.

  • Czy technologia COMET serwera naciśnięciem użyć tego mechanizmu HTTP trwałego połączenia do pchania danych do klientów?

Kinda (dla streamingu, przynajmniej), ale z dużą ilością bitej śmietany na wierzchu. Istnieją inne podejścia do implementacji Comet, takie jak ukryte elementy iframe i długi proces ankiety AJAX, które mogą nie wymagać trwałych połączeń (które powodują, że niektóre zapory są i tak ;-).

+0

Mówisz: "gniazda mają WIELE więcej funkcji i elastyczność". Jakie są te funkcje w odniesieniu do trwałego połączenia HTTP i jaką zapewnia elastyczność? –

+2

Gniazda TCP nie nakładają żadnych ograniczeń na to, kto mówi kiedy i jak - każda ze stron może wysłać bajty w dowolnym momencie, nie czekając na drugą ("pełny dupleks"), strumień nie jest wewnętrznie dzielony na wiadomości o określonej długości, & c. Potrzebujesz wyższego poziomu na górze, aby zrezygnować z elastyczności i zamieniać chaos na zamówienie: HTTP to tylko jeden taki protokół, asymetryczny półdupleksowy protokół żądania/odpowiedzi z wiadomościami o ściśle określonej długości (nagłówki o długości treści lub chunking). Klient może kolejkować zamówienia jeden po drugim, serwer musi odpowiadać na każde żądanie. –