실시간 통신 기능 (1)

2024. 8. 14. 17:06· 백엔드 Backend/기본 개념
목차
  1. 1. polling
  2. 2. long-polling
  3. 3. SSE (Server-Sent Event)
  4. 4. Web Socket

실시간 알림, 채팅과 같이 실시간으로 통신이 필요한 기능을 구현하기 위해선 어떤 방식을 사용할 수 있을까요?

1. polling


일정 주기를 가지고 서버의 API를 호출하는 방법입니다.

기본적인 HTTP 통신을 기반으로 하기 떄문에, 호환성이 좋다는 장점이 있습니다.

 

하지만 업데이트 주기가 길 경우 실시간으로 데이터가 갱신되지 않고, 

짧을 경우 갱신 사항이 없음에도 서버에 요청이 들어와 서버에 부하가 생길 수 있습니다.

 

 

2. long-polling


업데이트가 발생할 때에만 서버에서 응답을 보냅니다.

서버로 요청이 들어올 경우, 일정 시간동안 대기했다가 요청한 데이터가 업데이트되면 응답을 보냅니다.

하지만 마찬가지로 업데이트가 빈번하게 일어난다면 연결을 위한 요청이 똑같이 발생해, 서버에 부하가 일어날 수 있습니다.

 

3. SSE (Server-Sent Event)


클라이언트에서 서버의 특정 이벤트를 구독하면, 해당 이벤트가 발생할 때 클라이언트로 이벤트를 보내줍니다.

한 번만 연결 요청을 보내면, 연결이 종료될 때까지 재연결 과정 없이 서버에서 데이터를 계속 보낼 수 있습니다.

 

단, 서버 -> 클라이언트로만 데이터 전송이 가능하고, 그 반대는 불가능합니다.

또한, 최대 동시 접속 횟수가 제한되어 있습니다.

 

 

4. Web Socket


클라이언트 <-> 서버의 양방향 통신이 가능합니다.

변경 사항에 빠르게 반응해야하는 채팅이나 리소스 상태의 지속적업데이트가 필요한 문서 동시편집 같은 서비스에 주로 사용됩니다.

 

양방향 통신이 지속적으로 이루어질 수 있지만, 연결 유지 자체가 비용이 들어 트래픽양이 많아지면 서버에 부담이 될 수 있습니다.

 

 

참고
https://taemham.github.io/posts/Implementing_Notification/

'백엔드 Backend > 기본 개념' 카테고리의 다른 글

Cloud Native와 MSA  (1) 2025.01.03
메시지 큐  (0) 2024.08.20
캐시 / 캐시 전략  (2) 2024.08.12
JWT 토큰  (0) 2024.08.08
final 키워드 사용하기  (0) 2024.08.08
  1. 1. polling
  2. 2. long-polling
  3. 3. SSE (Server-Sent Event)
  4. 4. Web Socket
'백엔드 Backend/기본 개념' 카테고리의 다른 글
  • Cloud Native와 MSA
  • 메시지 큐
  • 캐시 / 캐시 전략
  • JWT 토큰
달래dallae
달래dallae
백엔드를 열심히 갈고 닦아서 광내봅시다 ~_~
달래dallae
머루랑달래랑
달래dallae
전체
오늘
어제
  • 분류 전체보기 (54)
    • 프로젝트 Project (14)
    • 백엔드 Backend (27)
      • 기본 개념 (13)
      • 서버 Server (9)
      • 스프링 Spring (1)
      • JPA (3)
    • 데이터베이스 Database (6)
      • MySQL (1)
      • Oracle (5)
    • 언어 Language (0)
      • 자바 Java (0)
      • 파이썬 Python (0)
    • 알고리즘 Algorithm (1)

블로그 메뉴

  • 홈
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
달래dallae
실시간 통신 기능 (1)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.