WebRTC vs WebSocket
1. WebRTC란?
Web Real-Time Communication (WebRTC)는 브라우저 간(P2P) 오디오, 비디오, 데이터 전송을 위한 기술입니다. 주로 영상 통화, 라이브 스트리밍, 화면 공유 등에 사용됩니다.
✅ 특징
- P2P 연결을 사용하여 서버 부담이 적음
- 오디오/비디오/데이터 전송 가능
- 브라우저에서 네이티브 지원 (추가 플러그인 불필요)
- 네트워크 상태에 따라 자동 대역폭 조절 (적응형 스트리밍)
2. WebSocket이란?
WebSocket은 서버와 클라이언트 간 양방향 통신 프로토콜로, 지속적인 연결을 유지하면서 실시간 데이터를 주고받을 수 있는 방식입니다. 주로 채팅, 주식 거래 시스템, 알림 시스템 등에 사용됩니다.
✅ 특징
- 연결이 유지되므로 실시간 데이터 전송 가능
- 클라이언트 ↔ 서버 간 양방향 통신
- HTTP보다 네트워크 효율이 좋음
- WebRTC처럼 P2P가 아니라 클라이언트 - 서버 구조
3. WebRTC vs WebSocket 차이점
| WebRTC | WebSocket |
|---|
| 주요 용도 | P2P 영상/오디오/데이터 전송 | 실시간 메시징, 알림 |
| 연결 방식 | P2P (직접 연결) | Client ↔ Server (중앙 서버 필요) |
| 데이터 전송 | 영상, 오디오, 데이터 모두 가능 | 텍스트 및 바이너리 데이터 전송 |
| 서버 역할 | 연결 설정(시그널링) 후에는 불필요 | 항상 필요 |
| 지연시간 | 낮음 (P2P 직접 전송) | 서버 거치므로 상대적으로 높음 |
| 사용 예시 | 화상 회의, 화면 공유, P2P 파일 전송 | 채팅, 알림 시스템, 주식 거래 |
4. WebRTC의 P2P 연결 방식
📌 일반적인 웹 통신 (서버 필요)
일반적으로 웹에서 데이터를 주고받을 때는 서버가 반드시 필요합니다.
- WebSocket 채팅: 클라이언트 A → 서버 → 클라이언트 B
- HTTP 요청: 클라이언트 A → 서버 → 클라이언트 B
즉, 클라이언트끼리 직접 연결되는 것이 아니라 항상 서버가 데이터를 중개하는 방식입니다.
📌 WebRTC의 P2P 연결
WebRTC는 두 클라이언트(브라우저)가 직접 데이터를 주고받는 기술입니다.
- P2P 직접 연결: 클라이언트 A ↔ 클라이언트 B (서버 없이 직접 연결)
- 데이터가 서버를 거치지 않고 직접 전송됨 → 대역폭 절약 & 빠른 속도
📌 WebRTC 연결 과정
- 시그널링 서버(WebSocket 사용 가능)
- P2P 연결을 위해 서로의 IP 주소, 연결 정보를 교환.
- 이때 WebSocket, HTTP 등을 사용해 서버가 중간에서 도와줌.
- P2P 연결 (WebRTC)
- 시그널링 후, WebRTC가 서버 없이 직접 데이터 전송(P2P)
- 영상/오디오/데이터 교환
📌 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은 실시간 채팅/데이터 교환용! 🚀