Delphi Server-Sent Events Client

HTTP-basierte Server-zu-Client-Push-Benachrichtigungen. Ein leichtgewichtiger, zuverlässiger Ansatz für Echtzeit-Datenstreaming — überall einsetzbar, wo HTTP funktioniert.

Was sind Server-Sent Events?

SSE bietet eine einfache, standardisierte Methode, mit der Server Daten über eine persistente HTTP-Verbindung an Clients pushen.

Einfaches Server-zu-Client-Streaming

Server-Sent Events nutzen eine einfache HTTP-Verbindung, um Ereignisse vom Server zum Client zu streamen. Anders als WebSocket ist SSE unidirektional — der Server sendet Daten, der Client empfängt sie. Diese Einfachheit ist seine Stärke: SSE funktioniert ohne Sonderkonfiguration durch HTTP-Proxys, Load Balancer und Firewalls. Der Browser (oder die Client-Bibliothek) übernimmt die Wiederverbindung automatisch, und Event-IDs ermöglichen nahtloses Wiederaufsetzen nach einer Trennung. sgcWebSockets bietet einen vollständigen SSE-Client, der sich natürlich in Delphi-Anwendungen integriert.

  • Nutzt Standard-HTTP — keine spezielle Server-Konfiguration
  • Automatische Wiederverbindung mit konfigurierbaren Retry-Intervallen
  • Event-IDs zum Wiederaufsetzen genau an der unterbrochenen Stelle
  • Funktioniert durch Proxys, Firewalls und CDNs
SERVER CLIENT text/event-stream data: {"event": "..."}

SSE-Funktionen

Einfache, aber leistungsstarke Server-zu-Client-Push-Benachrichtigungen.

Unidirektionales Streaming

Nur vom Server zum Client — die einfachste denkbare Echtzeit-Architektur. Wenn du nur Daten an Clients pushen musst, ist SSE die ideale Wahl.

Automatische Wiederverbindung

Eingebaute Wiederverbindungslogik mit konfigurierbaren Retry-Intervallen. Der Client verbindet sich bei Abbruch automatisch erneut.

Event-IDs zum Wiederaufsetzen

Jedes Ereignis kann eine ID tragen. Nach der Wiederverbindung sendet der Client die letzte Event-ID, sodass der Server an genau dieser Stelle weitermachen kann.

text/event-stream

Standard-MIME-Typ und einfaches Textformat. Ereignisse sind reiner Text mit optionalen benannten Event-Typen — einfach zu erzeugen und zu parsen.

Proxy- und Firewall-freundlich

Nutzt Standard-HTTP, daher funktioniert SSE durch Unternehmens-Proxys, Firewalls und CDNs — ohne Sonderkonfiguration oder geöffnete Ports.

WebSocket-Fallback

Nutze SSE als leichtgewichtigen Fallback in Umgebungen, in denen WebSocket-Verbindungen blockiert oder eingeschränkt sind.

Wiederverwendbarer Parser

TsgcSSEParser liest jeden text/event-stream, der ihm in Chunks zugeführt wird, sodass derselbe Code sowohl LLM-Streaming-Antworten als auch MCP Streamable HTTP verarbeitet.

SSE-Anwendungsfälle

Szenarien, in denen unidirektionaler Server-Push alles ist, was du brauchst.

Live-Feeds

Streame Live-News, Social-Media-Updates und Content-Feeds in Echtzeit per Push-Zustellung an Anwendungen.

Aktien-Ticker

Pushe Echtzeit-Aktienkurse, Marktdaten und Trading-Alerts mit minimaler Latenz an Client-Anwendungen.

Benachrichtigungssysteme

Stelle Benutzern Echtzeit-Benachrichtigungen, Warnungen und Systemmeldungen zu — ohne Polling oder manuelles Aktualisieren.

Log-Streaming

Streame Anwendungs-Logs, Serverereignisse und Debug-Ausgaben in Echtzeit für Monitoring und Fehlersuche.

Build-Status-Updates

Pushe CI/CD-Pipeline-Status, Build-Fortschritt und Deployment-Benachrichtigungen in Echtzeit an Entwickler-Dashboards.

Delphi-SSE-Beispiel

Verbinde dich mit einem SSE-Endpunkt und empfange vom Server gepushte Ereignisse.

uses
  sgcHTTP_SSE_Client;

var
  SSEClient: TsgcSSEClient;

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

  // Wiederverbindung konfigurieren
  SSEClient.ReconnectOptions.Interval := 3000;
  SSEClient.ReconnectOptions.Backoff := True;
  SSEClient.ReconnectOptions.MaxInterval := 30000;

  // Event-Handler einrichten
  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
  // Der Client sendet die LastEventId, sodass der Stream dort fortgesetzt wird, wo er unterbrochen wurde
  Memo1.Lines.Add('Reconnecting, attempt ' + IntToStr(aAttempt));
end;
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit, mit SSE zu starten?

Lade die kostenlose Testversion herunter und empfange in wenigen Minuten Server-Push-Ereignisse.