Server-Sent Events (SSE)

Notifications push server-to-client basées sur HTTP. Une approche légère et fiable du streaming de données en temps réel qui fonctionne partout où HTTP fonctionne.

Qu'est-ce que Server-Sent Events ?

SSE fournit une manière simple et standardisée pour les serveurs de pousser des données vers les clients sur une connexion HTTP persistante.

Streaming server-to-client simple

Server-Sent Events utilise une simple connexion HTTP pour streamer des événements du serveur vers le client. Contrairement à WebSocket, SSE est unidirectionnel — le serveur envoie des données et le client les reçoit. Cette simplicité fait sa force : SSE fonctionne à travers les proxies HTTP, les équilibreurs de charge et les firewalls sans configuration spéciale. Le navigateur (ou la bibliothèque cliente) gère la reconnexion automatiquement, et les IDs d'événements permettent une reprise fluide après une déconnexion. sgcWebSockets fournit un client SSE complet qui s'intègre naturellement aux applications Delphi.

  • Utilise HTTP standard — aucune configuration serveur spéciale
  • Reconnexion automatique avec intervalles de réessai configurables
  • IDs d'événements pour reprendre là où tu t'es arrêté
  • Fonctionne à travers les proxies, firewalls et CDN
SERVER CLIENT text/event-stream data: {"event": "..."}

Fonctionnalités SSE

Notifications push server-to-client simples et puissantes.

Streaming unidirectionnel

Server-to-client uniquement — l'architecture temps réel la plus simple possible. Quand tu as juste besoin de pousser des données vers les clients, SSE est le choix idéal.

Reconnexion automatique

Logique de reconnexion intégrée avec intervalles de réessai configurables. Le client se reconnecte automatiquement quand la connexion tombe.

IDs d'événements pour la reprise

Chaque événement peut porter un ID. Après reconnexion, le client envoie le dernier ID d'événement pour que le serveur puisse reprendre là où il s'est arrêté.

text/event-stream

Type MIME standard et format texte simple. Les événements sont du texte brut avec types d'événements nommés optionnels, ce qui les rend faciles à générer et parser.

Compatible proxy et firewall

Utilise HTTP standard, donc SSE fonctionne à travers les proxies d'entreprise, firewalls et CDN sans configuration spéciale ni ouverture de port.

Repli WebSocket

Utilise SSE comme repli léger dans les environnements où les connexions WebSocket sont bloquées ou restreintes.

Cas d'usage SSE

Scénarios où le push server unidirectionnel est tout ce dont tu as besoin.

Flux en direct

Stream les actualités en direct, les mises à jour de réseaux sociaux et les flux de contenu vers les applications avec une livraison push en temps réel.

Tickers boursiers

Pousse les cours boursiers en temps réel, les données de marché et les alertes de trading vers les applications clientes avec une latence minimale.

Systèmes de notifications

Livre des notifications, alertes et messages système en temps réel aux utilisateurs sans polling ni rafraîchissement manuel.

Streaming de logs

Stream les logs d'application, événements serveur et sorties de debug en temps réel pour la supervision et le dépannage.

Mises à jour de statut de build

Pousse le statut des pipelines CI/CD, la progression des builds et les notifications de déploiement vers les tableaux de bord des développeurs en temps réel.

Exemple SSE en Delphi

Connecte-toi à un endpoint SSE et reçois les événements poussés par le serveur.

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;

Prêt à commencer avec SSE ?

Télécharge l'essai gratuit et commence à recevoir des événements poussés par le serveur en quelques minutes.