服务器推送事件(SSE)
基于 HTTP 的服务器到客户端推送通知。一种轻量、可靠的实时数据流方式,在 HTTP 能工作的地方皆可使用。
基于 HTTP 的服务器到客户端推送通知。一种轻量、可靠的实时数据流方式,在 HTTP 能工作的地方皆可使用。
SSE 提供了一种简单、标准化的方式,让服务器通过持久 HTTP 连接向客户端推送数据。
服务器推送事件使用简单的 HTTP 连接将事件从服务器流式传输到客户端。与 WebSocket 不同,SSE 是单向的 — 服务器发送数据,客户端接收数据。这种简单性正是其优势:SSE 无需任何特殊配置即可穿越 HTTP 代理、负载均衡器和防火墙。浏览器(或客户端库)自动处理重连,事件 ID 机制可在断线后无缝恢复。sgcWebSockets 提供完整的 SSE 客户端,可与 Delphi 应用程序自然集成。
简单而强大的服务器到客户端推送通知。
仅支持服务器到客户端 — 最简单的实时架构。当您只需要向客户端推送数据时,SSE 是理想选择。
内置重连逻辑,重试间隔可配置。连接断开时客户端自动重新连接。
每个事件可携带 ID。重连后,客户端发送最后收到的事件 ID,服务器可从中断处继续推送。
标准 MIME 类型和简单文本格式。事件为纯文本,可选命名事件类型,易于生成和解析。
使用标准 HTTP,SSE 无需特殊配置或开放端口即可穿越企业代理、防火墙和 CDN。
在 WebSocket 连接被阻止或受限的环境中,将 SSE 用作轻量级降级方案。
只需服务器单向推送即可满足需求的场景。
通过实时推送将实时新闻、社交媒体更新和内容信息流传输到应用程序。
以极低延迟向客户端应用程序推送实时股价、市场数据和交易提醒。
无需轮询或手动刷新,向用户实时推送通知、警报和系统消息。
实时流式传输应用程序日志、服务器事件和调试输出,用于监控和故障排查。
实时向开发者仪表盘推送 CI/CD 流水线状态、构建进度和部署通知。
连接到 SSE 端点并接收服务器推送事件。
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;