Delphi Server-Sent Events(SSE)客户端

· 功能

sgcWebSockets 2023.2.0 起,HTTP/1 客户端得到改进并支持 SSE 请求。请注意,SSE 之前已在服务器组件上受支持,但在客户端上不支持。

SSE(Server-Sent Events)是一种 Web 技术,用于高效地将推送通知从服务器发送到客户端浏览器。这是一项标准,允许网页实时接收来自服务器的更新,无需持续轮询。SSE 通常用于为聊天应用程序、体育比分、金融数据等场景提供实时更新。

SSE 通过单个 HTTP 连接运行,浏览器自动打开并维持此连接。服务器使用此连接将更新推送给客户端,只要客户端保持连接状态,该连接就会保持打开。

SSE 客户端

TsgcHTTP1Client 有一个名为 GetSSE 的新方法,用于发送 HTTP 请求以在服务器和客户端之间启动事件流。每次客户端从服务器接收到新流时,都会调用 OnSSEMessage 事件,并附带文本消息的内容。

以下是简单示例:

oHTTP := TsgcHTTP1Client.Create(nil);
oHTTP.OnSSEMessage := OnSSEMessageEvent;
oHTTP.GetSSE('https://www.esegece.com/sse.php');
procedure OnSSEMessageEvent(Sender: TObject; const aMessage: string; var Cancel: Boolean);
begin
  DoLog(aMessage);
end;

完整源码演示和 Windows 编译项目可在下方下载。