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.
- 1. Implementacja serwera Web Sockets dla NodeJS
- 2. Dlaczego Web Sockets nie używają SOAP?
- 3. Serwer Webpack działający na HTTPS/Web Sockets Secure
- 4. Znacznik HTML5 nie działa w przeglądarce Android Web View
- 5. HTML5 Offline ramy web przechowywania
- 6. C# Asynchronous Sockets questions
- 7. Jak działa funkcja geolokalizacji HTML5?
- 8. Interfejs API HTML5 FullScreen z JavaScriptem
- 9. Android - Sockets vs Polling
- 10. Interfejs API historii HTML5 na Chrome iOS
- 11. Wyczyść interfejs API systemu plików HTML5
- 12. Interfejs API HTML5 - krojenie czy nie?
- 13. Używanie django-rest-interface
- 14. Jak utworzyć wtyczkę Interface Builder w XCode5 +?
- 15. Jak Ping Korzystanie Sockets Library - C
- 16. Które przeglądarki obsługują interfejs API historii HTML5?
- 17. Interfejs API pliku HTML5: FileReader.readAsText() zwraca "undefined"
- 18. Jak działa interfejs wywoływania aplikacji w C++?
- 19. Najlepsze zasoby HTML5 - web i drukowania
- 20. Javascript: Understanding File interface
- 21. Jak przekazać prawidłową akcję <Interface>?
- 22. Jak włączyć interfejs API publikowania w Chrome Web Store?
- 23. Gears lub interfejs API lokalizacji HTML5 na Androida 1.5
- 24. Jak używać HTML5 Web Audio API do nagrywania głosu
- 25. Jak ewoluować interfejs COM?
- 26. Argument 1 przekazywane do Yii \ Web \ użytkownik :: login() musi implementować interfejs Yii \ Web \ IdentityInterfac, null podano
- 27. Web Deploy już nie działa
- 28. Niestandardowe UIView zbudowany z Interface Builder dostępne/pozycjonowane przez Interface Builder
- 29. Wyświetlanie elementów innych niż element pełnoekranowy (pełnoekranowy interfejs API HTML5)
- 30. Synchronizuj vs. Async Sockets Performance w .NET
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