Słyszałem o interfejsie gniazd internetowych w specyfikacji pliku HTML z odpowiedniego pytania here.
Brzmi bardzo obiecująco!
Nie rozumiem, jak to działa, czy nadal korzysta z protokołu HTTP i pracuje nad nim, czy też działa jak gniazda TCP?Jak działa interfejs HTML5 Web Sockets Interface?
Odpowiedz
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.
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.
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.
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 –
@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ć. –
Dzięki. więc to naprawdę działa, prawda? (i nie odpowiada na żądanie ...) –
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.
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
WebSockets (używane?) Wspierają NTP, protokół wyłączony w latach 80. – Christian