Server-Sent Events (SSE)

HTTP 기반 서버-클라이언트 푸시 알림이에요. HTTP가 동작하는 모든 곳에서 실시간 데이터 스트리밍을 제공하는 가볍고 안정적인 방식이에요.

Server-Sent Events란?

SSE는 지속적인 HTTP 연결을 통해 서버가 클라이언트로 데이터를 푸시하는 간단하고 표준화된 방법을 제공해요.

간단한 서버-클라이언트 스트리밍

Server-Sent Events는 간단한 HTTP 연결을 사용해 서버에서 클라이언트로 이벤트를 스트리밍해요. WebSocket과 달리 SSE는 단방향이에요 — 서버가 데이터를 보내고 클라이언트가 받아요. 이러한 단순함이 강점이에요: SSE는 별도 설정 없이 HTTP 프록시, 로드 밸런서, 방화벽을 통과해요. 브라우저(또는 클라이언트 라이브러리)가 재연결을 자동으로 처리하며, 이벤트 ID 덕분에 연결이 끊긴 뒤에도 매끄럽게 재개할 수 있어요. sgcWebSockets은 Delphi 애플리케이션과 자연스럽게 통합되는 완전한 SSE 클라이언트를 제공해요.

  • 표준 HTTP 사용 — 별도의 서버 설정이 필요 없어요
  • 구성 가능한 재시도 간격을 갖춘 자동 재연결
  • 이전에 멈춘 지점부터 재개할 수 있는 이벤트 ID
  • 프록시, 방화벽, CDN을 통과해 동작
SERVER CLIENT text/event-stream data: {"event": "..."}

SSE 기능

간단하면서 강력한 서버-클라이언트 푸시 알림이에요.

단방향 스트리밍

서버에서 클라이언트로만 전송돼요 — 가능한 가장 단순한 실시간 아키텍처예요. 클라이언트로 데이터를 푸시만 하면 될 때 SSE가 이상적이에요.

자동 재연결

구성 가능한 재시도 간격을 갖춘 내장 재연결 로직이에요. 연결이 끊어지면 클라이언트가 자동으로 재연결해요.

재개를 위한 이벤트 ID

각 이벤트에는 ID를 부여할 수 있어요. 재연결 후 클라이언트가 마지막 이벤트 ID를 보내면 서버가 중단된 지점부터 재개할 수 있어요.

text/event-stream

표준 MIME 타입과 간단한 텍스트 형식이에요. 이벤트는 선택적 명명 이벤트 타입을 가진 평문이므로 생성과 파싱이 쉬워요.

프록시 및 방화벽 친화적

표준 HTTP를 사용하므로 SSE는 특별한 설정이나 포트 개방 없이도 기업 프록시, 방화벽, CDN을 통과해 동작해요.

WebSocket 대체

WebSocket 연결이 차단되거나 제한된 환경에서 SSE를 가벼운 대체 수단으로 사용하세요.

SSE 사용 사례

단방향 서버 푸시만 있으면 되는 시나리오예요.

라이브 피드

실시간 푸시 전달로 애플리케이션에 라이브 뉴스, 소셜 미디어 업데이트, 콘텐츠 피드를 스트리밍해요.

주식 시세 표시기

최소 지연으로 클라이언트 애플리케이션에 실시간 주식 가격, 시장 데이터, 거래 알림을 푸시해요.

알림 시스템

폴링이나 수동 새로고침 없이 사용자에게 실시간 알림, 경보, 시스템 메시지를 전달해요.

로그 스트리밍

모니터링 및 문제 해결을 위해 애플리케이션 로그, 서버 이벤트, 디버그 출력을 실시간으로 스트리밍해요.

빌드 상태 업데이트

개발자 대시보드에 CI/CD 파이프라인 상태, 빌드 진행 상황, 배포 알림을 실시간으로 푸시해요.

Delphi SSE 예제

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;

SSE를 시작할 준비가 되셨나요?

무료 체험판을 다운로드하고 몇 분 만에 서버 푸시 이벤트를 받기 시작하세요.