Cos'è WebSocket?

WebSocket è una tecnologia web che fornisce canali di comunicazione bidirezionali e full-duplex su un singolo socket TCP, standardizzata dall'IETF come RFC 6455.

Comunicazione in tempo reale

WebSocket consente una comunicazione persistente e bidirezionale tra browser e server senza polling continuo.

Oltre il modello richiesta-risposta di HTTP

HTTP tradizionale segue un modello richiesta-risposta in cui il client deve avviare ogni scambio. WebSocket trasforma una connessione HTTP in un canale persistente e full-duplex dove sia client sia server possono inviare dati in qualsiasi momento. Questo elimina l'overhead degli handshake HTTP ripetuti e abilita vere interazioni in tempo reale come feed live, giochi online, editing collaborativo e ticker finanziari.

  • Bidirezionale: sia client sia server possono inviare dati in push
  • La connessione persistente riduce latenza e overhead
  • Funziona sulle porte TCP standard 80/443, attraversando i firewall
  • Standardizzato come RFC 6455 dall'IETF
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

L'handshake WebSocket

Una connessione WebSocket parte come richiesta di upgrade HTTP e poi passa a un protocollo persistente a frame binari.

1. Richiesta di upgrade HTTP

Il client invia una richiesta HTTP GET con gli header Upgrade: websocket e Connection: Upgrade, insieme a un valore Sec-WebSocket-Key casuale.

2. Il server accetta

Il server risponde con HTTP 101 Switching Protocols, confermando l'upgrade. La connessione TCP è ora un canale WebSocket.

3. Messaggistica full-duplex

Entrambe le parti possono inviare liberamente frame di testo o binari con un overhead minimo di 2 byte. La connessione rimane aperta finché una delle due parti non la chiude.

Esempio WebSocket in Delphi

Connettiti a un server WebSocket e scambia messaggi in poche righe di codice.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'echo.websocket.org';
  WSClient.Port := 443;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Gestisci i messaggi in arrivo
  Memo1.Lines.Add('Received: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Invia un messaggio di testo al server
  WSClient.WriteData('Hello, WebSocket!');
end;

Pronto a costruire applicazioni in tempo reale?

Scarica sgcWebSockets e aggiungi oggi stesso il supporto WebSocket ai tuoi progetti Delphi, C++ Builder o .NET.