백엔드 통신 디자인 패턴 - 서버 전송 이벤트(Server-Sent Events, SSE)

SSE의 개념과 작동 방식

  1. SSE는 HTTP 프로토콜을 사용하여 서버에서 클라이언트로 실시간 데이터를 전송하는 기술입니다.
  2. 클라이언트가 한 번 요청을 보내면, 서버는 지속적으로 데이터를 스트리밍 형태로 보냅니다.
  3. 서버 응답은 끝나지 않고 계속되며, 클라이언트는 스트리밍 데이터를 파싱하여 개별 이벤트로 처리합니다.

SSE의 장단점

장점

단점

SSE 구현 예시

서버 측

const app = require("express")();

app.get("/stream", (req, res) => {
    res.setHeader("Content-Type", "text/event-stream");
    streamResponse(res);
})

let i = 0;
function streamResponse(res) {
    res.write("data: " + `message from server ---- [${i++}]\n\n`);
    setTimeout(() => streamResponse(res), 1000);
}

app.listen(8080)

클라이언트 측

let sse = new EventSource("http://localhost:8080/stream");

sse.onmessage = (msg) => console.log(msg)

주의사항