SSE는 Server Sent Events 의 약자이며, 서버의 데이터를 신시간으로, 지속적으로 Streaming 하는 기술이다. SSE는 웹 표준으로써 IE를 제외한 모든 브라우저에서 지원되며, IE역시 *polyfill 을 통해 지원이 가능하다.
기존에는 서버의 변경된 데이터를 가져오기 위해서 페이지 새로고침, 지속적으로 request를 보내는 ajax 폴링, 외부 플러그인 이용등을 사용해야만 했었다. 이외에도 websocket을 사용할 수 있지만 HTTP 통신을 이용하는 것이 아닌 웹소켓만을 위한 별도의 서버와 프로토콜로 통신하기 때문에 구현하는 비용이 많이 든다는 단점이 있다.
하지만 SSE는 기존 HTTP 웹 서버에서 HTTP API 만으로 동작되며 구현도 간단하기 때문에 서버와 프론트엔드 양측 모두 매우 쉽게 개발이 가능하다.
polyfill 이란 브라우저가 지원하지 않는 자바스크립트 코드를 지원 가능하도록 변환한 코드를 뜻함
const eventSources = new EventSource(stream_url);
eventSources.addEventListener('myevent', function(e) {
// 'myevent' 이벤트의 데이터 처리
};
eventSource.addEventListener('message', function(e) {
// 서버로부터 데이터가 오면
console.log(e.data);
});
eventSource.addEventListener('open', function(e) {
// connection되면
});
eventSource.addEventListener('error', function(e) {
// error 나면
if (e.readyState == EventSource.CLOSED) {
}