요약
이 튜토리얼은 WebRTC를 활용한 P2P 비디오 채팅 애플리케이션을 NestJS 시그널링 서버와 함께 구축하는 방법을 설명합니다.
WebRTC의 장점: 브라우저 간 직접 통신으로 서버를 거치지 않아 빠르고 비용 효율적이며, 웹 표준 기반으로 JavaScript와 원활히 통합됩니다.
시그널링 서버의 필요성: WebRTC는 자체적으로 메시징 기능이 없어 브라우저가 서로를 찾고 연결을 협상하기 위해 시그널링 서버가 필요합니다. NestJS는 WebSocket을 통해 안전한 시그널링을 제공합니다.
구현 과정:
- 백엔드: NestJS로 WebSocket 게이트웨이 구현, HTTPS 인증서 설정, offer/answer/ICE candidate 처리
- 프론트엔드: Socket.IO 클라이언트로 시그널링 통신, WebRTC PeerConnection 관리
- 핵심 기능: 통화 시작, 응답, ICE candidate 교환을 통한 네트워크 협상
연결 과정: 호출자가 offer 전송 → 수신자가 answer 응답 → 양측이 네트워크 정보(ICE candidate) 교환 → 직접 P2P 연결 성립
이 구조는 미디어 스트림을 서버를 거치지 않고 직접 전송하여 성능과 프라이버시를 최적화합니다. 추가 개선으로 데이터 채널을 통한 텍스트 채팅이나 화면 공유 기능을 구현할 수 있습니다.