Spring ‐ SSE로 알림 기능 구현하기 - dnwls16071/Backend_Study_TIL GitHub Wiki

📚 SSE(Server-Sent Events) 방식으로 알림 구현시 주의해야되는 부분

[ Polling ]

image

  • 가장 기본적인 데이터 처리 방식으로 특정 주기를 가지고 서버에 HTTP Request를 하는 방식이다.
  • Polling 방식은 언제 통신이 발생할지 예측이 불가능하다는 점에서 클라이언트가 계속적으로 요청을 하기 때문에 클라이언트 요청이 많아지게 되면 서버에 부하가 발생하게 된다.

[ Long Polling ]

image

  • Long Polling은 클라이언트에서 서버로 일단 HTTP Request를 보내고 이 상태로 계속 기다리다가 서버에서 해당 클라이언트로 전달할 이벤트가 있다면 그 순간 Response 메시지를 전달하며 연결이 종료된다.
  • 클라이언트의 요청에 대해 서버가 응답할 내용이 없더라도 연결을 유지해야 한다.

[ Streaming ]

image

  • 처음에는 클라이언트에서 서버로 HTTP Request를 보낸다.
  • 서버에서 클라이언트로 이벤트를 전달할 때, 해당 요청을 끊지 않고 필요한 메시지만 보내기를 반복하는 방식이다.
  • 이 방법의 경우 연결이 끊어졌을 때 클라이언트는 자동으로 재연결을 시도한다.

📚 알람 플로우

  • 로그인 직후 클라이언트는 서버에게 연결 요청을 한다.
  • 알람을 필요로 하는 서비스 측에 붙여 알람을 전송한다.
  • 해당 유저에게 이벤트 발생 시 이벤트 데이터를 전송한다.
* NotificationApiController
* NotificationService
* NotificationRepository

---

* RedisMessageService(Pub/Sub 모델)
* RedisSubscriber

---

* SseEmitterService