Server Sent Events(SSE) ?

**Server-Sent Events (SSE)**는 서버에서 클라이언트(주로 웹 브라우저)로 일방적으로 데이터를 지속적으로 보내는 방식입니다. 이 기술을 사용하면 서버는 클라이언트의 요청 없이도 실시간으로 데이터를 전송할 수 있어, 실시간 업데이트가 필요한 애플리케이션에 적합합니다.

1__y_9SbfC1hFniWc1wrebfA.webp

기존에는 서버의 변경된 데이터를 가져오기 위해서 페이지 새로고침, 지속적으로 request를 보내는 폴링, 외부 플러그인 이용 등을 사용해야 했습니다. 이외에도 websocket을 사용할 수 있지만 HTTP 통신을 이용하는 것이 아닌 웹소켓만을 위한 별도의 서버와 프로토콜로 통신하기 때문에 구현하는비용이 많이 든다는 단점이 있습니다. 하지만 SSE는 기존 HTTP 웹 서버에서 HTTP API 만으로 동작되며 구현도 간단하기 때문에 서버와 프론트엔드 양측 모두 매우 쉽게 개발이 가능합니다.

Server Sent Events와 Polling, WebSocket의 차이점

1 ) Server Sent events vs Polling

**폴링(Polling)**은 클라이언트가 일정한 주기로 서버에 데이터를 요청하는 방식입니다. 즉, 클라이언트는 정해진 간격으로 서버에 HTTP 요청을 보내고 서버는 그에 대한 응답을 반환합니다.

폴링은 클라이언트가 서버에 주기적으로 요청을 보내는 방식이고, SSE는 서버가 클라이언트에 필요한 데이터를 자동으로 푸시하는 방식입니다. SSE는 서버 측 이벤트 발생 시 바로 데이터를 전송하기 때문에 폴링보다 실시간성이 뛰어납니다.

2 ) Server Sent evnets vs WebSocket

**웹소켓(WebSocket)**은 양방향 통신을 지원하는 프로토콜입니다. 클라이언트와 서버 간의 지속적인 연결을 유지하고, 양쪽 모두 자유롭게 데이터를 주고받을 수 있습니다. HTTP는 주로 요청-응답 기반으로 통신이 이루어지지만, 웹소켓은 연결을 한 번 맺으면 서버와 클라이언트 간에 실시간으로 데이터 교환이 가능합니다.

웹소켓은 클라이언트와 서버가 양방향으로 데이터를 주고받을 수 있지만, SSE는 서버에서 클라이언트로 일방향으로 데이터가 전송됩니다.

웹소켓은 양방향 통신을 위한 프로토콜 설정과 관리가 복잡한 반면, SSE는 더 간단한 설정으로도 실시간 데이터를 서버에서 클라이언트로 푸시할 수 있습니다.

웹소켓은 채팅 애플리케이션, 게임 등 양방향 실시간 통신이 필요한 경우 적합하고, SSE는 주식 시세나 뉴스 알림처럼 서버에서 클라이언트로의 일방향 업데이트가 필요한 경우 더 적합합니다.

다운로드.png

기술 통신 방향 브라우저 지원 실시간성 데이터 형태 자동 재접속 최대 동시 접속 수 프로토콜
폴링 단방향 모든 브라우저에서 지원 낮음 UTF-8 No 브라우저 한도 없음, 요청 수에 따라 서버 부하 증가 HTTP
웹소켓 양방향 대부분 브라우저 지원 매우 높음 Binary, UTF-8 No 서버 셋업에 따라 다름, 브라우저 연결 한도 없음 WebSocket
SSE 단방향 대부분 모던 브라우저 지원
(pollyfills 가능) 높음 UTF-8 Yes (3초마다) HTTP에서는 브라우저당 6개 연결, HTTP/2로는 100개 기본 지원 HTTP