Server-Sent Events (SSE)

Op HTTP gebaseerde server-naar-client push-notificaties. Een lichtgewicht, betrouwbare aanpak voor realtime datastreaming die overal werkt waar HTTP werkt.

Wat zijn Server-Sent Events?

SSE biedt een eenvoudige, gestandaardiseerde manier voor servers om data naar clients te pushen via een persistente HTTP-verbinding.

Eenvoudige server-naar-client streaming

Server-Sent Events gebruiken een eenvoudige HTTP-verbinding om events van server naar client te streamen. Anders dan WebSocket is SSE unidirectioneel — de server stuurt data en de client ontvangt die. Die eenvoud is de kracht: SSE werkt door HTTP-proxies, load balancers en firewalls heen zonder speciale configuratie. De browser (of clientbibliotheek) regelt herverbinding automatisch en event-id's maken naadloos hervatten na een verbroken verbinding mogelijk. sgcWebSockets levert een complete SSE-client die naadloos integreert met Delphi-toepassingen.

  • Gebruikt standaard HTTP — geen speciale serverconfiguratie nodig
  • Automatische herverbinding met configureerbare retry-intervallen
  • Event-id's voor hervatten waar je gebleven bent
  • Werkt door proxies, firewalls en CDN's heen
SERVER CLIENT text/event-stream data: {"event": "..."}

SSE-functies

Eenvoudige maar krachtige server-naar-client push-notificaties.

Unidirectionele streaming

Alleen server naar client — de eenvoudigste realtime architectuur die mogelijk is. Als je alleen data naar clients hoeft te pushen, is SSE de ideale keuze.

Automatische herverbinding

Ingebouwde herverbindingslogica met configureerbare retry-intervallen. De client verbindt automatisch opnieuw wanneer de verbinding wegvalt.

Event-id's voor hervatten

Elk event kan een id meekrijgen. Na herverbinding stuurt de client het laatste event-id mee, zodat de server kan hervatten waar het gebleven was.

text/event-stream

Standaard MIME-type en eenvoudig tekstformaat. Events zijn platte tekst met optionele named event-types, waardoor ze eenvoudig te genereren en te parseren zijn.

Vriendelijk voor proxy & firewall

Gebruikt standaard HTTP, dus SSE werkt door bedrijfsproxies, firewalls en CDN's heen zonder speciale configuratie of open poorten.

WebSocket-fallback

Gebruik SSE als lichtgewicht fallback in omgevingen waar WebSocket-verbindingen worden geblokkeerd of beperkt.

SSE-toepassingen

Scenario's waarin unidirectionele server-push alles is wat je nodig hebt.

Live feeds

Stream live nieuws, social-media-updates en contentfeeds naar toepassingen met realtime push-aflevering.

Beurskoersen

Push realtime aandelenkoersen, marktdata en handelsalerts met minimale latentie naar clienttoepassingen.

Notificatiesystemen

Lever realtime notificaties, alerts en systeemberichten aan gebruikers zonder polling of handmatige refresh.

Log-streaming

Stream applicatielogs, server-events en debug-output in realtime voor monitoring en troubleshooting.

Build-statusupdates

Push de status van CI/CD-pipelines, buildvoortgang en deployment-notificaties in realtime naar developer-dashboards.

Delphi SSE-voorbeeld

Verbind met een SSE-endpoint en ontvang events die door de server worden gepusht.

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;

Klaar om aan de slag te gaan met SSE?

Download de gratis proefversie en begin binnen enkele minuten met het ontvangen van server-pushed events.