SSE(Server-Sent Events)

젼이·2024년 10월 24일

SSE (Server-Sent Events)란?

SSE는 서버에서 클라이언트로 데이터를 일방적으로 전송하는 HTTP 기반의 단방향 통신 방식이다. 클라이언트는 서버에 연결된 후 서버로부터 실시간 이벤트를 지속적으로 수신할 수 있다. 주로 실시간 알림이나 주기적인 데이터 업데이트가 필요할 때 사용한다.





SSE의 특징

1. 단방향 통신:
- 서버에서 클라이언트로 일방적으로 데이터를 보낼 수 있다.
- 클라이언트에서 서버로는 초기 연결 이후 메시지를 보낼 수 없다.

2. 지속적은 HTTP 연결:
- 서버와 클라이언트 사이에 지속적인 HTTP 연결을 유지한다.
- 서버는 클라이언트가 연결된 동안 원하는 때에 데이터를 전송할 수 있다.

3. 자동 재연결 지원:
- 클라이언트가 네트워크 문제로 연결이 끊어지더라도 자동으로 재연결을 시도한다.
- 이를 통해 안정적인 연결을 유지할 수 있다.

4. 브라우저 기본 지원:
- 대부분의 현대 브라우저(Chrome, Firefox, Safari, Edge)에서 SSE를 기본적으로 지원한다.

5. 간편한 구현:
- WebSocket보다 구현이 간단하며, HTTP 프로토콜을 그대로 사용하므로 네트워크 방화벽이나 프록시 문제를 피하기 쉽다.





SSE 동작 원리

  1. 클라이언트가 서버에 연결: 클라이언트는 서버의 특정 엔드포인트에 연결해 이벤트 스트림을 요청한다.

  2. 서버가 연결된 클라이언트에 이벤트 전송: 서버는 클라이언트가 연결된 동안 데이터나 알림을 전송한다.

  3. 클라이언트가 이벤트 수신: 클라이언트는 서버가 전송한 데이터를 수신해 화면에 표시한다.

  4. 자동 재연결: 만약 연결이 끊어지면 브라우저가 자동으로 서버에 재연결을 시도한다.





SSE 장점과 단점

장점:
1. 간단한 구현: HTTP 프로토콜 위에서 동작하므로 기존 인프라를 그대로 사용할 수 있다.
2. 자동 재연결 지원: 클라이언트가 자동으로 재연결을 시도한다.
3. 방화벽 문제 회피: HTTP 기반이므로 방화벽과 프록시 문제를 피할 수 있다.


단점:
1. 단방향 통신: 클라이언트에서 서버로의 실시간 데이터 전송이 불가능하다.
2. 비교적 낮은 성능: 많은 클라이언트와의 연결을 유지할 때 부하가 생길 수 있다.
3. 브라우저 제약: 일부 오래된 브라우저에서는 지원되지 않을 수 있다.





SSE가 적합한 사용 사례

  • 주식 시세 알림: 실시간으로 주가 변동을 클라이언트에 전송
  • 뉴스 업데이트: 뉴스가 게시될 때마다 클라이언트에 알림
  • 서버 로그 모니터링: 서버 로그를 실시간으로 클라이언트에 스트리밍
  • IoT 상태 모니터링: IoT 장치의 상태를 실시간으로 클라이언트에 표시

profile
신입 개발자 임니당 : > (2025.02.05~)

0개의 댓글