Delphi Server-Sent Events (SSE) クライアント

· 機能

sgcWebSockets 2023.2.0 から、HTTP/1 クライアントが改善され、SSE リクエストをサポートするようになりました。SSE はすでにサーバーコンポーネントではサポートされていましたが、クライアントでは未対応でした。

SSE(Server-Sent Events)は、サーバーからクライアントのブラウザーにプッシュ通知を効率的に受信するための Web 技術です。常時ポーリングを行わずに、Web ページがサーバーからリアルタイムで更新を受け取れる標準規格です。SSE は一般的に、チャットアプリケーション、スポーツスコア、金融データなどのリアルタイム更新を提供するシナリオで使用されます。

SSE は単一の HTTP 接続で動作し、ブラウザーはこの接続を自動的に開いて維持します。サーバーはクライアントが接続している間、この接続を通じて更新をプッシュし続けます。

SSE クライアント

TsgcHTTP1Client には新しいメソッド GetSSE が追加されました。このメソッドは HTTP リクエストを送信して、サーバーとクライアント間のイベントストリームを開始します。クライアントがサーバーから新しいストリームを受信するたびに、OnSSEMessage イベントがテキストメッセージの内容とともに呼び出されます。

以下に簡単な例を示します。

Find below a simple example.

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 用コンパイル済みプロジェクトは以下からダウンロードできます。