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
'Spring > Spring Study' 카테고리의 다른 글
[Spring] UUID, PK로 사용하면 어떨까? (0) | 2024.07.13 |
---|---|
[HTTP] GET 메소드 사용 시 Body가 있으면 안 되는 이유?! (0) | 2024.07.13 |
[Spring] fromEntity, toEntity, ofEntity? - DTO와 Entity 변환 (0) | 2024.07.04 |
[Spring] 연관 매핑을 지양하라? (0) | 2024.07.04 |
[Spring] @Data는 왜 지양해야 하는 것일까? (0) | 2024.07.04 |