Ho sentito parlare dell'interfaccia Web Sockets nella specifica del file HTML da una domanda pertinente here.
Sembra molto promettente!
Non capisco come funziona, usa ancora il protocollo HTTP e funziona intorno ad esso o funziona qualcosa come i socket TCP?Come funziona l'interfaccia Web Socket HTML5?
risposta
Il protocollo Socket Web è un protocollo TCP base, ma è di progettazione per il downgrade a HTTP. C'è anche un handshake HTTP che chiede al server di eseguire l'aggiornamento al protocollo Web Sockets. Quindi, se il server lo supporta, verrà utilizzata una connessione TCP duplex, altrimenti si ricorrerà a HTTP e agli hack di Comet.
Non è HTTP, né è semplice socket TCP. È progettato per ridurre il sovraccarico delle connessioni socket regolari (AJAX/COMET è un sovraccarico molto elevato), ma senza sacrificare alcuni dei principi di sicurezza del browser che sono stati sviluppati negli ultimi anni.
Il WebSockets iniziale stretta di mano sembra un po 'come HTTP. In questo modo sarà più semplice per i proxy e il server Web HTTP esistenti supportare le connessioni WebSockets in ingresso e fare la cosa giusta con loro (cioè inoltrandoli al gestore reale). Ma dopo una stretta di mano riuscita (che include lo scambio e la convalida delle informazioni di origine), la connessione rimane aperta e diventa bidirezionale.
Ogni pacchetto di dati (inviato dal server o dal client) inizia con un '\ x00' (zero byte), è seguito da dati codificati UTF-8 e termina con un '\ xff' (tutti i byte).
Il progetto di norma corrente è qui: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
Si potrebbe anche trovare il wsproxy incluso nel noVNC per essere utile come riferimento. wsproxy è un generico WebSockets al proxy socket TCP. Esiste una versione C e python di wsproxy inclusa con noVNC.
In un certo senso, è sia una richiesta HTTP e un socket TCP regolare.
È richiesta una connessione web socket utilizzando una normale richiesta HTTP su TCP. Ci sono alcune intestazioni inviate che indicano al server Web che si tratta di una websocket richiesta e non di una pagina normale, ma fondamentalmente si tratta solo di una richiesta HTTP.
Dopo la risposta viene inviata dal server, la connessione viene aggiornato. Cioè, la connessione TCP che veniva utilizzata per HTTP viene dirottata per una chiamata più alta: bidirezionale, trasferimento dati in tempo reale.
Una volta che si ha la capacità di comunicare in modo bidirezionale e in modo efficiente (che è la grande vittoria sulla cometa), gli orizzonti degli sviluppatori sono notevolmente aumentati. Improvvisamente, cose come i giochi MMO e la collaborazione in tempo reale, che non erano possibili usando solo le tecnologie web, diventano possibili.
Domanda: è ESATTAMENTE come aprire la richiesta http e tenerla aperta? (come la cometa a lungo polling ...)? o è qualcosa di diverso –
@RoyiNamir, Sì, esattamente lo stesso, dare o prendere alcune intestazioni, tranne che non è necessario aprire una nuova connessione ogni volta che si desidera inviare o ricevere qualcosa. –
Grazie. quindi effettivamente spingere davvero .... giusto? (e non risponde a una richiesta ...) –
In una tale situazione il ruolo del server viene fornito quando: (. Comm 2 vie)
In HTML 5, WebSocket come una fone non walky-talky. Protocollo HTTP aggiornato al protocollo websocket. (wss:// from ws://)
Il SERVER dovrebbe essere in grado di aprire il canale duplex e quindi ACCETTA con la comunicazione duplex. Si prega di passare anche attraverso questo link: http://www.html5rocks.com/en/tutorials/websockets/basics/
Grazie.
L'ultima volta che ho visto le specifiche del protocollo WebSocket, non c'era modo di eseguire automaticamente il downgrade su HTTP. Dove è stato aggiunto? – EricLaw
WebSockets (usato per?) Supporta NTP, un protocollo spento negli anni '80. – Christian