Network

WebSocket과 SSE(Server-Sent Events)의 차이점

10Biliion 2025. 6. 26. 08:26
반응형

1. WebSocket이란?

WebSocket은 브라우저와 서버 간에 양방향 통신을 가능하게 하는 프로토콜입니다. HTTP 연결 이후 업그레이드를 통해 별도의 통신 채널을 생성하며, 지속적인 연결을 유지하면서 데이터 전송이 가능합니다.

 

특징

  • 양방향 통신: 클라이언트와 서버가 자유롭게 메시지를 주고받을 수 있음
  • 지속적인 연결: 연결을 유지한 채 실시간 데이터 전송 가능
  • 낮은 오버헤드: HTTP Header가 반복적으로 전송되지 않음
  • 바이너리 데이터 전송 가능

JavaScript 클라이언트

Spring Boot 서버

 

 

2. SSE (Server-Sent Events)란?

SSE는 서버가 클라이언트에 일방적으로 데이터를 푸시하는 방식입니다. HTTP 기반의 단방향 스트리밍 방식이며, 브라우저에서 기본적으로 지원합니다.

 

특징

  • 단방향 통신: 서버에서 클라이언트로만 데이터 전송 가능
  • 자동 재연결: 네트워크 문제로 연결이 끊겨도 자동 복구
  • HTTP 기반: 기존 HTTP/1.1을 사용하며 방화벽 통과 용이
  • 설정 간단: WebSocket에 비해 서버 설정이 단순

 

JavaScript 클라이언트

Spring Boot 서버

 

 

WebSocket vs SSE 비교

항목 WebSocket SSE(Server-Sent Events)
통신 방향 양방향 단방향 (서버 → 클라이언트)
프로토콜 ws:// 또는 wss:// (WebSocket) http:// (기존 HTTP)
브라우저 지원 대부분 지원 IE를 제외한 모든 주요 브라우저
전송 데이터 형식 텍스트, 바이너리 텍스트(EventStream)
자동 재연결 직접 구현 필요 기본 내장
방화벽, 프록시 문제 상대적으로 많음 적음
사용 용도 채팅, 게임, 주식 등 쌍방향 통신 뉴스, 알림 등 서버 푸시
 

 

4. 어떤 기술을 사용할까?

WebSocket이 적합한 경우

  • 실시간 채팅, 협업 툴
  • 게임 서버, 멀티플레이
  • 실시간 알림 + 클라이언트 액션 처리

SSE가 적합한 경우

  • 뉴스 피드, 주가 정보
  • 알림, 로그 모니터링
  • 리소스가 제한된 환경에서 단순 서버 푸시가 필요한 경우
반응형