Server-Sent Events-client voor Delphi

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.

Herbruikbare parser

TsgcSSEParser leest elke text/event-stream die er in stukken aan wordt gevoerd, zodat dezelfde code zowel LLM-streamingresponsen als MCP Streamable HTTP afhandelt.

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
  sgcHTTP_SSE_Client;

var
  SSEClient: TsgcSSEClient;

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

  // Configure reconnection
  SSEClient.ReconnectOptions.Interval := 3000;
  SSEClient.ReconnectOptions.Backoff := True;
  SSEClient.ReconnectOptions.MaxInterval := 30000;

  // Set up event handlers
  SSEClient.OnOpen := OnSSEOpen;
  SSEClient.OnEvent := OnSSEEvent;
  SSEClient.OnReconnect := OnSSEReconnect;
end;

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

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

procedure TForm1.OnSSEEvent(Sender: TObject; const aEvent: TsgcSSEEvent);
begin
  // Handle incoming server-sent events
  if aEvent.EventType = 'price-update' then
    UpdatePrice(aEvent.Data)
  else if aEvent.EventType = 'notification' then
    ShowNotification(aEvent.Data)
  else
    Memo1.Lines.Add(aEvent.EventType + ': ' + aEvent.Data);
end;

procedure TForm1.OnSSEReconnect(Sender: TObject; aAttempt: Integer;
  var aDelay: Integer; var aCancel: Boolean);
begin
  // The client sends LastEventId, so the stream resumes where it stopped
  Memo1.Lines.Add('Reconnecting, attempt ' + IntToStr(aAttempt));
end;
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

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.