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.
WebSocket è una tecnologia web che fornisce canali di comunicazione bidirezionali e full-duplex su un singolo socket TCP, standardizzata dall'IETF come RFC 6455.
WebSocket consente una comunicazione persistente e bidirezionale tra browser e server senza polling continuo.
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.
Una connessione WebSocket parte come richiesta di upgrade HTTP e poi passa a un protocollo persistente a frame binari.
Il client invia una richiesta HTTP GET con gli header Upgrade: websocket e Connection: Upgrade, insieme a un valore Sec-WebSocket-Key casuale.
Il server risponde con HTTP 101 Switching Protocols, confermando l'upgrade. La connessione TCP è ora un canale WebSocket.
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.
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;