본문 바로가기
Spring/Spring Study

[SSE] SSE란?

by ♡˖GYURI˖♡ 2024. 7. 15.
728x90

 

위 영상을 바탕으로 정리한 글입니다!

 

 

 

궁금증

새로고침을 하지 않아도 실시간으로  웹 페이지가 변하는 점

 

HTTP 프로토콜

요청이 있어야 응답을 보낼 수 있음

 

 

 

다양한 실시간 통신 방법

웹 소켓

  • 양방향 통신을 위해 도입된 프로토콜
  • HTTP 프로토콜이 아닌 ws 프로토콜 사용

 

polling

  • 주기적으로 요청을 보내 응답을 받음
  • 단점
    • 주기적으로 일어나는 것이기 때문에 '진짜' 실시간이 아님
    • 쓸데없는 요청이 계속 발생해 서버에 부하가 생김

long polling

  • 응답이 도착하면 요청을 보내고 대기
  • 기존 polling 방식의 단점을 보완
  • 단점 : 요청과 응답이 여전히 1:1이라는 점에서 서버에 부하가 발생할 수 있음

 

 

 

Server Sent Event (SSE)

  • 한 번 연결한 후 지속적으로 응답을 받음
  • 장점
    • 서버에서 실시간으로 이벤트 전송 (vs polling)
    • polling보다 적은 통신 횟수 (vs polling)
    • 새로운 프로토콜을 익힐 필요가 없음 (vs 웹소켓)
    • 서버 측에서의 단방향 통신 (vs 웹소켓)

 

 

MediaType.TEXT_EVENT_STREAM_VALUE : 클라이언트는 SSE라는 걸 인식하게 되고, 한 번의 응답으로 연결을 끊지 않음 

 

Spring에서 지원하는 SseEmitter

 

 

예상되는 문제

  • emitter Repository의 동시성 문제
    • 해결방법 : ThreadSafe한 컬렉션 사용
  • 다중 WAS 환경
    • 해결방법 : Redis pub/sub 사용
  • Open In View의 커넥션 점유
    • 해결방법 : 필수적으로 false 설정

 

 

 

 

 


 

 

폴링 / 롱 폴링 방식

■ 폴링 / 롱 폴링 방식 ㆍ 폴링 방식 - 특정 주기를 기준으로 반복적인 요청-응답이 진행된다. - 단점으로는 쓸모없는 요청-응답이 많기 때문에 트래픽이 낭비된다. - 사용하는 경우 1) 응답이 실

yoonix.tistory.com

 

 

SSE를 활용한 다중서버 환경에서의 실시간 알람 기능(feat.Hazelcast Topic)

SSE: Hazelcast Topic과의 효율적인 통합 방안

medium.com