Server Sent Event (SSE)
목차
- Server Sent Event?
- 동작 방식
- 유의점
- 예제
Server Sent Event?
Server Sent Event?
-
웹 서버가 실시간으로 데이터를 클라이언트에게 푸시하는 HTML5 웹 통신 표준입니다.
-
HTTP/1.1 기반 프로토콜
-
서버에서 클라이언트로만 데이터를 보낼 수 있으며
-
클라이언트에서 서버로 데이터를 보내는 것은 지원하지 않음
-
-
서버는
text/event-stream
MIME 타입을 헤더에 지정해야 함 -
실시간 피드 업데이트, 주식 가격 변동 등에 사용할 수 있음
HTTP/1.1 기반?
-
스트림 멀티플렉싱
-
HTTP/2는 여러 개의 요청과 응답을 하나의 연결에서 동시에 처리
-
고정된 리소스(스트림)를 계속 열어두는 SSE와는 잘 어울리지 않음
-
-
헤더 압축
-
HTTP/2에서는 헤더 압축을 통해 효율적인 통신을 지향
-
SSE는 단순한 텍스트 기반 메시지 포맷을 사용하고, 별도의 헤더 압축 없이 메시지를 보냄
-
HTTP/2의 헤더 압축 기능이 SSE에 큰 이점을 주지 못한다.
-
-
Flow Control
-
HTTP/2에는 흐름 제어(flow control) 기능이 있음
-
SSE에서는 별도의 흐름 제어 없이 데이터를 계속 전송
-
이로 인해 HTTP/2의 흐름 제어 기능과 충돌할 가능성 (Back pressure, Buffering 등)
-
HTTP Header/Body
동작 방식
클라이언트
-
연결 시작
-
이벤트 수신
-
사용자 지정 이벤트 처리
-
재연결
-
연결 종료
클라이언트
서버
-
연결 수락
-
데이터 스트리밍
-
이벤트 형식에 맞춘 응답 작성 및 전송
-
연결 유지
-
연결 종료
서버
유의점
유의점
-
브라우저 호환성
-
구형 브라우저 (IE거나 Internet Explorer거나 인터넷 익스플로러거나...) 지원 여부 확인
-
-
Connection 제한
-
서버에서 동시에 열어둘 수 있는 Connection 제한이 있을 수 있으므로 확인 필요
-
-
재 연결 정책
-
연결이 끊길 경우 자동으로 재 연결 시도 (EventSource 자체 내장 기능)
-
주기가 너무 짧은 경우 서버에 부하
-
-
UTF-8 인코딩만 지원하기 때문에 다른 형식의 경우 인코딩이 필요
-
HTTP Proxy
-
Nginx 리버스 프록시 같은것을 사용할 경우 설정 확인 필요
-
유의점 (Nginx)
감사합니다 땡큐
Server Sent Event (SSE)
By Doon Doon
Server Sent Event (SSE)
- 219