본문 바로가기
BackEnd/Project

[SNS] Ch04. SSE 개념

by 개발 Blog 2024. 9. 10.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

현재 구현된 알람 페이지는 알람 리스트가 한 번 호출된 후, 새로고침이 일어나는 경우에만 API 호출이 발생해 데이터를 새롭게 갱신할 수 있는 구조다. 하지만 만약 새로고침 없이 실시간으로 데이터가 갱신되도록 만들고 싶다면 어떻게 해야 할까?

 

Polling

가장 단순한 방식으로 주기적으로 API를 호출하는 방법이 있다. 이를 Polling이라고 한다.

  • 동작 방식: 일정한 주기를 가지고 서버의 API를 반복적으로 호출한다.
  • 장점: 구현이 간단하고 호환성이 좋다.
  • 단점: 실시간 업데이트가 아니며, 불필요한 요청이 계속 발생하여 서버 부하를 유발할 수 있다.

Long-Polling

Polling의 개선된 방식으로, 클라이언트가 서버에 요청을 보낼 때 서버가 대기하는 방식이다.

  • 동작 방식: 서버는 요청이 들어올 경우 일정 시간 동안 대기했다가, 데이터가 업데이트되면 응답을 보낸다.
  • 장점: 실시간으로 데이터를 받을 수 있는 것처럼 보이지만, 여전히 일정한 주기로 데이터를 확인해야 하므로 폴링과 유사하다.
  • 단점: 데이터 업데이트가 빈번한 경우, 불필요한 서버 부하가 발생할 수 있다.

SSE (Server-Sent Event)

SSE는 서버에서 클라이언트(브라우저)로 데이터를 자동으로 푸시해 주는 방식이다.

  • 동작 방식: 클라이언트가 서버에 이벤트 구독을 요청하고, 서버는 이벤트가 발생할 때마다 클라이언트로 데이터를 전송한다.
  • 장점: 서버에서 브라우저로 실시간 데이터 전송이 가능하다.
  • 단점:
    • 브라우저에서 서버로의 데이터 전송은 불가능하다.
    • 동시 접속 수에 제한이 있을 수 있다.

WebSocket

서버와 클라이언트 간에 양방향 통신이 가능한 방식이다.

  • 동작 방식: 서버와 클라이언트가 상호 간에 데이터를 주고받을 수 있다.
  • 장점: 실시간으로 양방향 데이터를 주고받을 수 있어 가장 유연한 통신 방법이다.

다양한 실시간 데이터 전송 방식이 있지만, 이번 프로젝트에서는 SSE(Server-Sent Events)를 사용해볼 것이다. SSE는 클라이언트에서 서버로의 구독 요청을 통해 서버에서 실시간으로 데이터를 전송받을 수 있는 간단하고 효과적인 방법이다. 이를 통해 알람 페이지에서 새로고침 없이 실시간 데이터 갱신을 구현할 예정이다.