Server-Sent Events (SSE)

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.

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
  sgcSSE_Client, sgcSSE_Classes;

var
  SSEClient: TsgcSSEClient;

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

  // Wiederverbindung konfigurieren
  SSEClient.Options.RetryInterval := 3000;
  SSEClient.Options.AutoReconnect := True;

  // Event-Handler einrichten
  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
  // Eingehende Server-Sent Events verarbeiten
  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 übernimmt die Wiederverbindung
  Memo1.Lines.Add('Disconnected. Reconnecting...');
end;

Bereit, mit SSE zu starten?

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