WebSocket

WebSocket è un protocollo di comunicazione per una connessione TCP persistente, bidirezionale e full duplex dal browser Web di un utente a un server.

Una connessione WebSocket viene avviata inviando una richiesta di handshake WebSocket dalla connessione HTTP di un browser a un server per aggiornare la connessione. Insieme all'intestazione della richiesta di aggiornamento, la richiesta di handshake include un'intestazione Sec-WebSocket-Key a 64 bit. Il server risponde con un hash della chiave in un'intestazione Sec-Websocket-Auth. Questo scambio di intestazione impedisce a un proxy di memorizzazione nella cache di inviare nuovamente gli scambi WebSocket precedenti.

Da quel punto, la connessione è binaria e non è conforme al protocollo HTTP. Un'applicazione server è a conoscenza di tutte le connessioni WebSocket e può comunicare con ognuna individualmente. Poiché WebSocket rimane aperto, il server o l'utente possono inviare messaggi in qualsiasi momento fino a quando uno di loro non chiude la sessione. La comunicazione può essere avviata a entrambe le estremità, il che rende possibile la programmazione web basata sugli eventi. Al contrario, l'HTTP standard consente solo agli utenti di richiedere nuovi dati.

WebSocket è stato visto per la prima volta nelle specifiche HTML5 come TCPConnection, un segnaposto per un'API socket basata su TCP. Il protocollo è stato sviluppato da Ian Hickson e Michael Carter e standardizzato da IETF in RFC 6455 nel 2011. WebSocket è supportato da quasi tutti i principali browser Web, inclusi Firefox, Chrome, Opera, Edge e Internet Explorer.