SSE (Sever-Sent-Event) 란?

지헌·2025년 11월 25일

WebSocket 기능은 node.js로 구현해보았지만 이번에 이력서가 붙은 회사에서 기술 경험에 SSE라는게 있어서 사전 과제 이전에 기술을 경험해보고자하여 SSE에 대해 학습하게 되었습니다.

SSE : Server-Sent-Event의 약자로, 서버 → 클라이언트 단방향 스트리밍 기술.

즉, 서버가 브라우저로 지속적으로 이벤트를 푸시(Push) 하는 기능으로 주기적인 업데이트를 서버가 계속 보내야하는 상황일 때 사용합니다.

일반적으로 클라이언트가 서버에게 요청을 보내고, 서버는 이러한 요청이 있을 때만 그에 맞는 응답을 보내는 방식으로 소통하는데, SSE는 서버에서 클라이언트의 요청이 없어도 자유롭게 메세지를 보낼 수 있도록 SSE Web API가 제공됩니다.

사용 예시

  • 실시간 알림
  • AI 챗봇
  • 차트 / 주식 / 환율
  • 대기열(Queue)
  • 채팅 "읽음 표시", 작성 중..

배경

HTTP 특징인 비연결성은 연결한 적이 있어도 연결을 끊어버린다는 단점이 있다.
그래서 이를 해결하기 위한 웹 기술은 Polling. Long Polling, WebSocket, SSE가 있다.

장점과 단점

장점

  1. HTTP를 통해 통신하므로 다른 프로토콜은 필요가 없고, 구현이 간단하다.
  2. 네트워크 연결이 끊어졌을 때 자동으로 재연결을 시도한다.
  3. 실시간으로 서버에서 클라이언트로 데이터를 전송할 수 있다.
  4. 서버 리소스 부담이 적고 빠르고 LLM text stream에는 가장 최적화되어 있다.

단점

  1. GET 메소드만 지원하고, 파라미터를 보내는데 한계가 있다.
  2. 단방향 통신이며, 한 번 보내면 취소가 불가능하다는 단점이 있다.
  3. 클라이언트가 페이지를 닫아도 서버에서 감지하기가 어렵다는것도 단점이다.
  4. SSE는 지속적인 연결을 유지해야 하므로, 많은 클라이언트가 동시에 연결을 유지할 경우 서버 부담이 커질 수 있다.
  5. 바이너리(이미지, 음성) 전송이 불가능하다.
  6. 모바일 네트워크 환경에서 끊김 많다.

[참고] : https://velog.io/@black_han26/SSE-Server-Sent-Events

profile
차곡차곡 그만 쌓아올리고 취업해서 부딪쳐보고 싶은

0개의 댓글