Server-Sent Events (SSE)
Notificaciones push de servidor a cliente basadas en HTTP. Un enfoque ligero y fiable para el streaming de datos en tiempo real que funciona allí donde funciona HTTP.
Notificaciones push de servidor a cliente basadas en HTTP. Un enfoque ligero y fiable para el streaming de datos en tiempo real que funciona allí donde funciona HTTP.
SSE ofrece una forma sencilla y estandarizada de que los servidores envíen datos a los clientes a través de una conexión HTTP persistente.
Los Server-Sent Events utilizan una simple conexión HTTP para transmitir eventos del servidor al cliente. A diferencia de WebSocket, SSE es unidireccional — el servidor envía datos y el cliente los recibe. Esta simplicidad es su fortaleza: SSE funciona a través de proxies HTTP, balanceadores de carga y firewalls sin configuración especial. El navegador (o la biblioteca cliente) gestiona la reconexión automáticamente y los IDs de evento permiten reanudar sin problemas tras una desconexión. sgcWebSockets ofrece un cliente SSE completo que se integra de forma natural con las aplicaciones Delphi.
Notificaciones push de servidor a cliente sencillas pero potentes.
Solo de servidor a cliente — la arquitectura en tiempo real más simple posible. Cuando solo necesitas enviar datos a los clientes, SSE es la opción ideal.
Lógica de reconexión integrada con intervalos de reintento configurables. El cliente se reconecta automáticamente cuando se cae la conexión.
Cada evento puede llevar un ID. Tras la reconexión, el cliente envía el último ID de evento para que el servidor pueda reanudar desde donde lo dejó.
Tipo MIME estándar y formato de texto sencillo. Los eventos son texto plano con tipos de evento con nombre opcionales, lo que los hace fáciles de generar y analizar.
Usa HTTP estándar, así que SSE funciona a través de proxies corporativos, firewalls y CDNs sin configuración especial ni apertura de puertos.
Usa SSE como fallback ligero en entornos donde las conexiones WebSocket están bloqueadas o restringidas.
Escenarios donde solo necesitas push unidireccional del servidor.
Transmite noticias en directo, actualizaciones de redes sociales y feeds de contenido a las aplicaciones con entrega push en tiempo real.
Envía precios bursátiles en tiempo real, datos de mercado y alertas de trading a las aplicaciones cliente con latencia mínima.
Entrega notificaciones, alertas y mensajes del sistema en tiempo real a los usuarios sin polling ni recarga manual.
Transmite logs de aplicación, eventos de servidor y salida de depuración en tiempo real para monitorización y resolución de problemas.
Envía el estado del pipeline CI/CD, el progreso de los builds y notificaciones de despliegue a los paneles de desarrollo en tiempo real.
Conecta a un endpoint SSE y recibe los eventos enviados por el servidor.
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;