
안녕하세요. 오늘은 Spring Boot SSE(Server-sent-Events) 채팅 시스템에 대해 알아볼게요.

SSE(Server_Sent Events)란?
SSE는 서버가 클라이언트에게 실시간으로 데이터를 푸쉬할 수 있는 HTML5 표준 기술이에요.
즉 SSE는 단방향식 통신으로 비유를 하자면
플러그와 콘센트로 콘센트를 꽂으면 계속 전기가 흐르는 느낌으로 생가해주시면 될 것 같아요.
폴링(Polling) VS SSE
폴링방식은 다음과 같아요.
클라이언트 ──[요청]──> 서버
클라이언트 <──[응답]── 서버 (연결 종료)
(2초 대기)
클라이언트 ──[요청]──> 서버 (반복)
클라이언트 <──[응답]── 서버 (연결 종료)
이 방식의 문제점은 불필요한 요청을 보내면서 서버 부하가 크고, 요청이 과할 시 지연될 수 있어요.
폴링의 방식은 1단계라고 한다면 SSE단계는 폴링의 한 단계 상승한 2단계로 볼 수 있어요.
클라이언트 ──[연결 요청]──> 서버
클라이언트 <══════════════ 서버 (연결 유지!)
클라이언트 <──[새 메시지]── 서버 (즉시 푸시!)
클라이언트 <──[새 메시지]── 서버 (즉시 푸시!)
SSE의 장점은 즉시 전송이 가능하고, 폴링에 비해 서버 부하가 감소되며 폴링에 비해 효율적이에요.
SseEmitter?
SSE를 사용하기 위해서는 스프링부트에 제공한 SseEmitter구현체를 사용해야 하는데요.
이 구현체를 통해 서버와 클라이언트 간의 지속적인 연결을 관리해 줘요.
그리고 SseEmitter는 비동기 요청 처리를 위해 설계된 객체예요.
일반적인 요청-응답 모델과 달리,
서버는 클라이언트 요청에 즉시 응답하지 않고 SseEmitter 객체를 반환하여 연결을 열어둬요.
이후, 새로운 데이터가 발생했을 때만 연결된 스레드를 사용해 데이터를 전송함으로써,
서버 자원을 효율적으로 관리할 수 있어요.
마지막으로 SSE의 주요 활용 사례를 소개해 드릴게요.

이러한 기능들은 모두 클라이언트가 서버에 데이터를 보낼 필요 없이,
오직 서버로부터 데이터를 받기만 하면 되기 때문에
단방향 통신에 최적화된 SSE가 효율적이고 정석적인 방법이 될 수 있어요.

여기까지 Spring SSE에 대해 알아봤는데요.
폴링보다 효율적이고 실시간성이 뛰어난 SSE는,
단방향 알림이나 이벤트 스트리밍에 특히 적합하다는 것을 알게 되었어요.
'Backend > Java' 카테고리의 다른 글
| Spring - WebSocket + STOMP (0) | 2026.01.18 |
|---|---|
| Spring - Polling (0) | 2026.01.13 |
| Spring - PersistRepository (0) | 2026.01.06 |
| 결제 시스템 구축 - 핵심 개념 정리 (0) | 2026.01.02 |
| 이메일 중복방지 (0) | 2025.12.31 |