Server-Sent Events (SSE)

Notifiche push da server a client basate su HTTP. Un approccio leggero e affidabile allo streaming di dati in tempo reale che funziona ovunque funzioni HTTP.

Cosa sono i Server-Sent Events?

SSE offre un modo semplice e standardizzato perché i server inviino dati ai client su una connessione HTTP persistente.

Streaming semplice da server a client

I Server-Sent Events usano una semplice connessione HTTP per inviare in streaming eventi dal server al client. A differenza di WebSocket, SSE è unidirezionale — il server invia i dati e il client li riceve. Questa semplicità è il suo punto di forza: SSE funziona attraverso proxy HTTP, load balancer e firewall senza alcuna configurazione speciale. Il browser (o la libreria client) gestisce automaticamente la riconnessione e gli event ID permettono di riprendere senza problemi dopo una disconnessione. sgcWebSockets fornisce un client SSE completo che si integra naturalmente con le applicazioni Delphi.

  • Usa l'HTTP standard — nessuna configurazione server speciale
  • Riconnessione automatica con intervalli di retry configurabili
  • Event ID per riprendere da dove avevi lasciato
  • Funziona attraverso proxy, firewall e CDN
SERVER CLIENT text/event-stream data: {"event": "..."}

Caratteristiche di SSE

Notifiche push da server a client semplici ma potenti.

Streaming unidirezionale

Solo da server a client — l'architettura in tempo reale più semplice possibile. Quando ti serve solo inviare dati ai client, SSE è la scelta ideale.

Riconnessione automatica

Logica di riconnessione integrata con intervalli di retry configurabili. Il client si riconnette automaticamente quando la connessione cade.

Event ID per il resume

Ogni evento può trasportare un ID. Dopo la riconnessione, il client invia l'ultimo event ID così che il server possa riprendere da dove era stato interrotto.

text/event-stream

Tipo MIME standard e formato testuale semplice. Gli eventi sono testo semplice con tipi di evento nominati opzionali, facili da generare e parsare.

Compatibile con proxy e firewall

Usa HTTP standard, quindi SSE funziona attraverso proxy aziendali, firewall e CDN senza configurazioni speciali o aperture di porte.

Fallback per WebSocket

Usa SSE come fallback leggero in ambienti in cui le connessioni WebSocket sono bloccate o limitate.

Casi d'uso di SSE

Scenari in cui basta il push unidirezionale dal server.

Feed live

Trasmetti notizie in diretta, aggiornamenti dai social media e feed di contenuti alle applicazioni con push in tempo reale.

Ticker azionari

Invia quotazioni di mercato in tempo reale, dati di mercato e alert di trading alle applicazioni client con latenza minima.

Sistemi di notifica

Recapita notifiche, alert e messaggi di sistema in tempo reale agli utenti senza polling né refresh manuali.

Streaming dei log

Trasmetti log applicativi, eventi server e output di debug in tempo reale per monitoraggio e troubleshooting.

Aggiornamenti sullo stato delle build

Invia in tempo reale lo stato delle pipeline CI/CD, l'avanzamento delle build e le notifiche di deployment alle dashboard degli sviluppatori.

Esempio SSE in Delphi

Collegati a un endpoint SSE e ricevi gli eventi inviati dal server.

uses
  sgcSSE_Client, sgcSSE_Classes;

var
  SSEClient: TsgcSSEClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SSEClient := TsgcSSEClient.Create(nil);
  SSEClient.URL := 'https://api.example.com/events';

  // Configure reconnection
  SSEClient.Options.RetryInterval := 3000;
  SSEClient.Options.AutoReconnect := True;

  // Set up event handlers
  SSEClient.OnSSEConnect := OnSSEConnect;
  SSEClient.OnSSEEvent := OnSSEEvent;
  SSEClient.OnSSEDisconnect := OnSSEDisconnect;
end;

procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
  SSEClient.Connect;
end;

procedure TForm1.OnSSEConnect(Sender: TObject);
begin
  Memo1.Lines.Add('Connected to SSE stream');
end;

procedure TForm1.OnSSEEvent(Sender: TObject;
  aEventName, aData, aLastEventId: string);
begin
  // Handle incoming server-sent events
  if aEventName = 'price-update' then
    UpdatePrice(aData)
  else if aEventName = 'notification' then
    ShowNotification(aData)
  else
    Memo1.Lines.Add(aEventName + ': ' + aData);
end;

procedure TForm1.OnSSEDisconnect(Sender: TObject);
begin
  // Auto-reconnect will handle reconnection
  Memo1.Lines.Add('Disconnected. Reconnecting...');
end;

Pronto a iniziare con SSE?

Scarica la versione di prova gratuita e inizia a ricevere eventi inviati dal server in pochi minuti.