2009-09-20 19 views

Odpowiedz

2

Protokół Web Socket jest protokołem opartym na protokole TCP, ale ma zamiar przejść na wersję HTTP. Istnieje także handshake HTTP, który prosi serwer o uaktualnienie do protokołu Web Sockets. Jeśli więc serwer go obsługuje, wówczas zostanie użyte dupleksowe połączenie TCP, w przeciwnym razie uciekniemy się do HTTP i Cacków.

+0

Ostatni raz, gdy zobaczyłem specyfikację protokołu WebSocket, nie było możliwości automatycznej zmiany wersji na HTTP. Gdzie to zostało dodane? – EricLaw

+0

WebSockets (używane?) Wspierają NTP, protokół wyłączony w latach 80. – Christian

7

To nie jest HTTP, ani zwykłe gniazda TCP. Został zaprojektowany, aby uzyskać niski narzut regularnych połączeń z gniazdami (AJAX/COMET są bardzo wysokie koszty ogólne), ale bez poświęcania niektórych zasad bezpieczeństwa przeglądarki, które zostały opracowane w ciągu ostatnich kilku lat.

Początkowe uzgadnianie WebSockets wygląda trochę jak HTTP. Ułatwi to istniejącym serwerom proxy HTTP i serwerowi WWW obsługę przychodzących połączeń WebSockets i będzie działać prawidłowo (tzn. Przekazywanie ich do rzeczywistego programu obsługi). Ale po pomyślnym uzgadnianiu (które obejmuje wymianę i sprawdzanie informacji o pochodzeniu), połączenie pozostaje otwarte i staje się dwukierunkowe.

Każdy pakiet danych (wysyłany z serwera lub od klienta) rozpoczyna się od "\ x00" (zero bajtów), po nim następuje zakodowanie danych UTF-8 i kończy się na '\ xff' (wszystkie bajty)).

Obecny projekt normy jest tutaj: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76

też może znaleźć wsproxy zawarte w noVNC być użyteczne jako odniesienie. wsproxy to ogólny serwer proxy WebSockets do TCP. Istnieje zarówno wersja C i Pythona wsproxy dołączona do noVNC.

http://github.com/kanaka/noVNC/tree/master/utils/

22

W pewnym sensie, to zarówno żądania HTTP i regularne gniazda TCP.

Połączenie internetowe jest wymagane przy użyciu zwykłego żądania HTTP przez TCP. Jest kilka nagłówków wysłanych, które wskazują serwerowi internetowemu, że jest żądanym websem, a nie zwykłą stroną, ale zasadniczo jest to tylko żądanie HTTP.

Po wysłaniu odpowiedzi z serwera połączenie zostaje zaktualizowane. Oznacza to, że połączenie TCP, które było używane do HTTP, zostało przejęte w celu uzyskania wyższego poziomu wywołania: dwukierunkowego transferu danych w czasie rzeczywistym.

Po uzyskaniu zdolności do komunikowania się dwukierunkowo i skutecznie (co jest główną wygraną nad kometą), horyzonty programistów są znacznie większe. Nagle stały się możliwe rzeczy takie jak gry MMO i współpraca w czasie rzeczywistym, które nie były możliwe przy użyciu tylko technologii internetowych.

+0

Pytanie: czy to jest DOKŁADNIE jak otwarcie żądania http i utrzymanie go w stanie otwartym? (jak długi głos w kometach ...)? czy jest to coś innego –

+0

@RoyiNamir, Tak, dokładnie tak samo, podaj lub zrób kilka nagłówków, z tym że nie musisz otwierać nowego połączenia za każdym razem, gdy chcesz coś wysłać lub odebrać. –

+0

Dzięki. więc to naprawdę działa, prawda? (i nie odpowiada na żądanie ...) –

0

W takiej sytuacji rola serwera przychodzi, gdy: (. 2-way komunikator)

W HTML 5, websocket jak Fone nie Walky-talkie. Protokół HTTP zaktualizowany do protokołu websocket. (wss:// from ws://) SERWER powinien mieć możliwość otwierania kanału dupleksowego, a więc AGREE z komunikacją duplex. Proszę również przejść przez ten link: http://www.html5rocks.com/en/tutorials/websockets/basics/

Dzięki.