📕 서버와 클라이언트의 통신방법 한번에 정리해 드림

서버와 클라이언트간에 통신 방법은 수년에 걸쳐 여러 방법이 개발되었는데요,

각 방법에는 고유한 장점과 단점이 있습니다.


제목이 다소 자극적(?) 입니다만,

이에 대해 잘 정리된 좋은 글이 있어 많은 분들이 보시면 좋을듯 하여 어그로를 한번 끌어보았습니다.


글에서 정리한 통신 방법은 다음과 같습니다.


📌 Long-Polling

클라이언트가 정기적으로 서버에 반복적으로 요청하는 일반 Polling 과 달리

Long-Polling 은 새로운 이벤트가 발생할 때까지 서버와의 Connection 을 유지함으로써

서버에 새로운 이벤트가 발생하면 즉각 응답을 받을 수 있습니다.

단, 응답을 받으면 서버와의 Connection 은 종료됩니다.

서버의 응답을 받은 직후 클라이언트는 새로운 Long-Polling 요청을 다시 시작하고 이러한 프로세스가 반복됩니다.

이 방법을 사용하면 보다 즉각적인 데이터 업데이트가 가능하고 불필요한 네트워크 트래픽과 서버 부하가 줄어듭니다.


📌 WebSocket

WebSocket 은 클라이언트와 서버 간의 단일 장기 연결을 통해 전이중 통신 채널을 제공합니다.

이 기술을 사용하면 브라우저와 서버가 HTTP 요청-응답 주기의 오버헤드 없이 데이터를 교환할 수 있어 라이브 채팅, 게임 또는 금융 거래 플랫폼과 같은 애플리케이션의 실시간 데이터 전송이 용이해집니다.

WebSocket 은 연결이 설정된 후 클라이언트와 서버가 독립적으로 데이터를 보낼 수 있도록 함으로써 짧은 대기 시간과 높은 빈도의 업데이트가 필요한 시나리오에 이상적입니다.


📌 Server-Sent-Events(SSE)

Server-Sent-Events(SSE) 는 HTTP 를 통해 클라이언트에 서버 업데이트를 푸시하는 표준 방법을 제공합니다.

WebSocket 과 달리 Server-Sent-Events 는 서버에서 클라이언트로의 단방향 통신 전용으로 설계되었으므로 라이브 뉴스 피드, 스포츠 경기 결과 또는 서버에 데이터를 전송하지 않고 클라이언트를 실시간으로 업데이트해야 하는 모든 상황에 이상적입니다.

Server-Sent-Events 는 서버가 전체 본문을 클라이언트에 한 번에 전송하고 끝내는게 아닌 연결을 열어두고 이벤트를 전송해야 할 때마다 한 줄씩 전송하여 응답을 보내는 단일 HTTP 요청으로 이해할 수 있습니다.


📌 WebTransport API

WebTransport 는 웹 클라이언트와 서버 간의 효율적이고 대기 시간이 짧은 통신을 위해 설계된 최신 API 입니다.

HTTP/3 QUIC 프로토콜을 활용하여 신뢰할 수 있는 방식과 신뢰할 수 없는 방식으로 여러 스트림을 통해 데이터를 전송하고 데이터가 순서 없이 전송되도록 허용하는 등 다양한 데이터 전송 기능을 활성화합니다.

이로 인해 WebTransport 는 실시간 게임, 라이브 스트리밍 및 협업 플랫폼과 같은 고성능 네트워킹이 필요한 애플리케이션을 위한 강력한 도구가 됩니다.


📌 WebRTC

WebRTC (Web Real-Time Communication)는 복잡한 서버 인프라나 추가 플러그인 설치 없이 웹 브라우저 및 모바일 애플리케이션 내에서 직접 실시간 통신(RTC) 기능을 가능하게 하는 오픈 소스 프로젝트이자 API 표준입니다.

스트리밍 오디오, 비디오 및 브라우저 간의 데이터 교환을 위한 P2P 연결을 지원합니다.

WebRTC 는 NAT 및 방화벽을 통해 작동하고 ICE, STUN 및 TURN과 같은 프로토콜을 활용하여 피어 간의 연결을 설정하도록 설계되었습니다.


각 통신 방식에 대한 자세한 내용과 단점 및 한계는 공유드린 원문 링크를 참고해주세요.


📚 원문

  • https://rxdb.info/articles/websockets-sse-polling-webrtc-webtransport.html

WebSockets vs Server-Sent-Events vs Long-Polling vs WebRTC vs WebTransport | RxDB - JavaScript Database

Rxdb

WebSockets vs Server-Sent-Events vs Long-Polling vs WebRTC vs WebTransport | RxDB - JavaScript Database

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 3월 29일 오후 2:24

 • 

저장 149조회 6,459

댓글 0