Server-Sent Events (SSE)
HTTP 기반 서버-클라이언트 푸시 알림이에요. HTTP가 동작하는 모든 곳에서 실시간 데이터 스트리밍을 제공하는 가볍고 안정적인 방식이에요.
HTTP 기반 서버-클라이언트 푸시 알림이에요. HTTP가 동작하는 모든 곳에서 실시간 데이터 스트리밍을 제공하는 가볍고 안정적인 방식이에요.
SSE는 지속적인 HTTP 연결을 통해 서버가 클라이언트로 데이터를 푸시하는 간단하고 표준화된 방법을 제공해요.
Server-Sent Events는 간단한 HTTP 연결을 사용해 서버에서 클라이언트로 이벤트를 스트리밍해요. WebSocket과 달리 SSE는 단방향이에요 — 서버가 데이터를 보내고 클라이언트가 받아요. 이러한 단순함이 강점이에요: SSE는 별도 설정 없이 HTTP 프록시, 로드 밸런서, 방화벽을 통과해요. 브라우저(또는 클라이언트 라이브러리)가 재연결을 자동으로 처리하며, 이벤트 ID 덕분에 연결이 끊긴 뒤에도 매끄럽게 재개할 수 있어요. sgcWebSockets은 Delphi 애플리케이션과 자연스럽게 통합되는 완전한 SSE 클라이언트를 제공해요.
간단하면서 강력한 서버-클라이언트 푸시 알림이에요.
서버에서 클라이언트로만 전송돼요 — 가능한 가장 단순한 실시간 아키텍처예요. 클라이언트로 데이터를 푸시만 하면 될 때 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;