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.
HTTP-basierte Server-zu-Client-Push-Benachrichtigungen. Ein leichtgewichtiger, zuverlässiger Ansatz für Echtzeit-Datenstreaming — überall einsetzbar, wo HTTP funktioniert.
SSE bietet eine einfache, standardisierte Methode, mit der Server Daten über eine persistente HTTP-Verbindung an Clients pushen.
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.
Einfache, aber leistungsstarke Server-zu-Client-Push-Benachrichtigungen.
Nur vom Server zum Client — die einfachste denkbare Echtzeit-Architektur. Wenn du nur Daten an Clients pushen musst, ist SSE die ideale Wahl.
Eingebaute Wiederverbindungslogik mit konfigurierbaren Retry-Intervallen. Der Client verbindet sich bei Abbruch automatisch erneut.
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.
Standard-MIME-Typ und einfaches Textformat. Ereignisse sind reiner Text mit optionalen benannten Event-Typen — einfach zu erzeugen und zu parsen.
Nutzt Standard-HTTP, daher funktioniert SSE durch Unternehmens-Proxys, Firewalls und CDNs — ohne Sonderkonfiguration oder geöffnete Ports.
Nutze SSE als leichtgewichtigen Fallback in Umgebungen, in denen WebSocket-Verbindungen blockiert oder eingeschränkt sind.
Szenarien, in denen unidirektionaler Server-Push alles ist, was du brauchst.
Streame Live-News, Social-Media-Updates und Content-Feeds in Echtzeit per Push-Zustellung an Anwendungen.
Pushe Echtzeit-Aktienkurse, Marktdaten und Trading-Alerts mit minimaler Latenz an Client-Anwendungen.
Stelle Benutzern Echtzeit-Benachrichtigungen, Warnungen und Systemmeldungen zu — ohne Polling oder manuelles Aktualisieren.
Streame Anwendungs-Logs, Serverereignisse und Debug-Ausgaben in Echtzeit für Monitoring und Fehlersuche.
Pushe CI/CD-Pipeline-Status, Build-Fortschritt und Deployment-Benachrichtigungen in Echtzeit an Entwickler-Dashboards.
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;