Logo NEXUS

NEXUS didattica

← Torna indietro
Informatica / Lezione Teorica

WebSocket & Comunicazione Full-Duplex

Protocollo WebSocket, handshake iniziale HTTP, comunicazione bidirezionale in tempo reale e simulatore di chat interattivo.

1. Cos'è il Protocollo WebSocket

Il protocollo WebSocket (standardizzato in RFC 6455) consente un canale di comunicazione bidirezionale persistente (Full-Duplex) su una singola connessione TCP tra un client (es. browser) e un server. A differenza del classico modello HTTP request-response, con WebSocket entrambe le parti possono inviare dati in qualsiasi momento senza dover riaprire la connessione.

Vantaggi Chiave rispetto a HTTP Tradizionale:

1. Bassa Latenza: Nessun overhead di intestazioni HTTP ripetitive per ogni singola transazione.
2. Real-Time Reale: Il server può spingere (push) dati al client all'istante senza che quest'ultimo debba interrogare periodicamente il server (polling).

2. L'Handshake Iniziale

Nonostante la comunicazione successiva avvenga su socket dedicati, la connessione WebSocket parte sempre come una normale richiesta HTTP di upgrade:

Fase Descrizione e Intestazioni HTTP
Richiesta Client (Handshake) Il client invia una GET con intestazioni specifiche:
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: [token casuale]
Risposta Server (Accettazione) Il server risponde confermando il cambio protocollo con codice 101 Switching Protocols:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

3. WebSocket vs HTTP (Polling)

Per comprendere l'efficacia dei WebSocket, confrontiamoli con le tecniche tradizionali:

4. Simulatore Interattivo: Chat in Real-Time via WebSocket

Simula l'apertura di un canale WebSocket, l'invio di messaggi testuali e la ricezione immediata di risposte asincrone dal server.

ws-client@nexus-sys:~# WebSocket Live Stream
> [SYSTEM] Connessione WebSocket pronta. Clicca su "INVIA WS" per stabilire l'handshake e inviare messaggi in tempo reale.