WebRTC vs WebSocket

daev681·2025년 2월 18일

WebRTC vs WebSocket

1. WebRTC란?

Web Real-Time Communication (WebRTC)는 브라우저 간(P2P) 오디오, 비디오, 데이터 전송을 위한 기술입니다. 주로 영상 통화, 라이브 스트리밍, 화면 공유 등에 사용됩니다.

✅ 특징

  • P2P 연결을 사용하여 서버 부담이 적음
  • 오디오/비디오/데이터 전송 가능
  • 브라우저에서 네이티브 지원 (추가 플러그인 불필요)
  • 네트워크 상태에 따라 자동 대역폭 조절 (적응형 스트리밍)

2. WebSocket이란?

WebSocket은 서버와 클라이언트 간 양방향 통신 프로토콜로, 지속적인 연결을 유지하면서 실시간 데이터를 주고받을 수 있는 방식입니다. 주로 채팅, 주식 거래 시스템, 알림 시스템 등에 사용됩니다.

✅ 특징

  • 연결이 유지되므로 실시간 데이터 전송 가능
  • 클라이언트 ↔ 서버 간 양방향 통신
  • HTTP보다 네트워크 효율이 좋음
  • WebRTC처럼 P2P가 아니라 클라이언트 - 서버 구조

3. WebRTC vs WebSocket 차이점

WebRTCWebSocket
주요 용도P2P 영상/오디오/데이터 전송실시간 메시징, 알림
연결 방식P2P (직접 연결)Client ↔ Server (중앙 서버 필요)
데이터 전송영상, 오디오, 데이터 모두 가능텍스트 및 바이너리 데이터 전송
서버 역할연결 설정(시그널링) 후에는 불필요항상 필요
지연시간낮음 (P2P 직접 전송)서버 거치므로 상대적으로 높음
사용 예시화상 회의, 화면 공유, P2P 파일 전송채팅, 알림 시스템, 주식 거래

4. WebRTC의 P2P 연결 방식

📌 일반적인 웹 통신 (서버 필요)

일반적으로 웹에서 데이터를 주고받을 때는 서버가 반드시 필요합니다.

  • WebSocket 채팅: 클라이언트 A → 서버 → 클라이언트 B
  • HTTP 요청: 클라이언트 A → 서버 → 클라이언트 B

즉, 클라이언트끼리 직접 연결되는 것이 아니라 항상 서버가 데이터를 중개하는 방식입니다.

📌 WebRTC의 P2P 연결

WebRTC는 두 클라이언트(브라우저)가 직접 데이터를 주고받는 기술입니다.

  • P2P 직접 연결: 클라이언트 A ↔ 클라이언트 B (서버 없이 직접 연결)
  • 데이터가 서버를 거치지 않고 직접 전송됨 → 대역폭 절약 & 빠른 속도

📌 WebRTC 연결 과정

  1. 시그널링 서버(WebSocket 사용 가능)
    • P2P 연결을 위해 서로의 IP 주소, 연결 정보를 교환.
    • 이때 WebSocket, HTTP 등을 사용해 서버가 중간에서 도와줌.
  2. P2P 연결 (WebRTC)
    • 시그널링 후, WebRTC가 서버 없이 직접 데이터 전송(P2P)
  3. 영상/오디오/데이터 교환
    • 클라이언트끼리 직접 데이터를 주고받음.

📌 WebRTC가 P2P를 못 하는 경우?

  • 방화벽(기업 네트워크, 공공 와이파이)이 막고 있는 경우
  • NAT(Network Address Translation) 문제로 P2P 연결이 어려운 경우
  • 이런 경우에는 TURN 서버를 사용해서 중계함 (즉, 서버를 거치게 됨)

5. WebRTC와 WebSocket 관계

WebRTC는 P2P 연결이지만, 처음 연결을 맺을 때는 서버(WebSocket 등)가 필요함!
이 과정을 시그널링(Signaling)이라고 함

📌 WebRTC에서 WebSocket을 사용하는 경우

  • 채팅 메시지 전송 (P2P가 필요 없는 데이터)
  • 방 목록, 유저 상태 업데이트
  • P2P 연결이 불가능한 경우(Firewall 문제) TURN 서버 대신 WebSocket 사용

6. 결론

  • WebRTC는 P2P 연결용 → 영상/음성/데이터 전송
  • WebSocket은 서버 ↔ 클라이언트 간 실시간 메시지 전송용
  • WebRTC 연결 시 WebSocket을 시그널링용으로 사용할 수 있음

즉, WebRTC는 실시간 영상/오디오/파일 전송용, WebSocket은 실시간 채팅/데이터 교환용! 🚀

profile
개인 개발 공부

0개의 댓글