컴퓨터 사이언스/네트워크

[WebRTC] 화상회의·음성채팅을 위한 웹 기반 실시간 기술

Dachaes 2025. 4. 14. 16:32
728x90
반응형

WebRTC 

 

화상 회의, 음성 채팅, 실시간 화면 공유 같은 기능을 웹에서 구현하고 싶다면? 그럴 때 사용하는 기술이 바로 WebRTC입니다.
WebRTC는 브라우저와 브라우저 간에 서버를 거치지 않고도 직접 통신이 가능하게 해주는 P2P(피어 투 피어) 기반의 실시간 통신 기술입니다. 단일한 통신 프로토콜이라기보다는, 실시간 미디어 전송을 위해 STUN, TURN, SRTP, ICE 등 여러 네트워크 프로토콜을 조합한 기술 스택 또는 통신 프레임워크에 가깝습니다.

이 글에서는 WebRTC의 개념, 동작 구조, 실제 예제, 그리고 WebSocket과의 차이까지 개발자가 쉽게 이해할 수 있도록 정리해드립니다.

 


1.  WebRTC란?

WebRTC(Web Real-Time Communication)는 웹 브라우저 간에 실시간 오디오, 비디오, 데이터를 전송할 수 있도록 해주는 오픈 소스 표준 기술입니다.

  • 구글이 주도하여 개발
  • 설치 없이 브라우저에서 바로 사용 가능
  • WebRTC는 실제 통신에 P2P(피어 투 피어) 방식을 사용함

WebRTC로 가능한 것들

기능 설명
🎥 실시간 영상 전송 웹캠 화상 통화, 원격 회의
🎤 실시간 음성 통신 음성 채팅, VoIP
📦 데이터 전송 파일 전송, 텍스트 데이터 교환 등 (DataChannel 사용)
🖥️ 화면 공유 데스크톱, 창 공유 등 (화면 스트리밍)

WebRTC 구성 요소 3가지

구성 요소 설명
getUserMedia 마이크, 카메라 등 사용자 미디어 장치 접근
RTCPeerConnection 피어 간 오디오/비디오 스트림 연결
RTCDataChannel 브라우저 간 데이터 전송 (WebSocket처럼 사용 가능)

장점

  • 별도 설치 없이 브라우저에서 사용 가능
  • 실시간 통신 (낮은 지연, 고성능)
  • 영상, 음성, 데이터 모두 처리 가능
  • 오픈 표준, 대부분의 브라우저 지원

단점

  • 초기 설정 및 시그널링 로직이 복잡
  • P2P 연결이 항상 보장되지는 않음 (특히 NAT, 방화벽 환경)
  • 보안, 인증, 오류 처리 등은 개발자가 직접 구현해야 함

 


2.  WebRTC 연결 과정

WebRTC는 브라우저 간 직접 연결을 시도합니다. 하지만 대부분의 환경에서는 NAT, 방화벽 때문에 중간 서버의 도움(신호 교환)이 필요합니다.

연결 흐름 요약

  1. getUserMedia()로 오디오/비디오 장치 접근
  2. 신호 교환(Signaling) : SDP 정보 교환 (보통 WebSocket 사용)
  3. ICE 후보 교환 : STUN 또는 TURN 서버 사용
  4. 피어 간 연결 완료 → 실시간 미디어/데이터 송수신 시작
  • WebRTC 자체에는 Signaling 기능이 포함되어 있지 않기 때문에, WebSocket 등을 함께 사용해야 합니다.

실제 사용 예시 코드 (영상 통화 기본)

const pc = new RTCPeerConnection();
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(stream => {
  document.getElementById("localVideo").srcObject = stream;
  stream.getTracks().forEach(track => pc.addTrack(track, stream));
});
  • 이 후에는 offer, answer, ICE candidate 등을 주고받는 signaling 과정이 필요합니다.

 


3.  WebRTC의 핵심 기술들

기술 역할
STUN 서버 상대방의 공인 IP를 알아냄
TURN 서버 직접 연결이 불가능할 때 중계 역할 (속도 느림)
ICE (Interactive Connectivity Establishment) 가능한 모든 네트워크 후보(IP, 포트 등)를 시험
SDP (Session Description Protocol) 연결 설정 정보(코덱, 미디어 포맷 등) 교환

 


4.  WebRTC vs WebSocket

항목 WebRTC WebSocket
목적 미디어(P2P) 통신 서버 ↔ 클라이언트 간 실시간 메시지 전송
실시간 오디오/비디오
데이터 전송 ✅ (DataChannel)
서버 의존성 ❌ (연결 후에는 P2P)
사용 예 화상 회의, 음성 채팅, 화면 공유 실시간 채팅, 알림, 주식 시세 등

 


5.  마무리

WebRTC는 높은 실시간성과 퍼포먼스를 제공하지만, 초기 설정이 복잡하고 보안 및 인증 처리를 개발자가 직접 구현해야 한다는 점에서 진입장벽이 다소 있습니다. 그럼에도 불구하고 웹 기반 실시간 미디어 통신의 핵심 기술로 자리잡고 있으며, Zoom, Google Meet, Discord 등 다양한 서비스에서 실제로 활용되고 있습니다.

함께 보면 좋은 자료

외부 사이트 :

블로그 글 :

 

[WebSocket] 채팅부터 알림까지, 실시간 웹의 기반

WebSocketHTTP로는 실시간 채팅, 알림 서비스 등을 구현하기 어렵다는 얘기를 들어본 적 있으신가요? 그럴 때 등장하는 기술이 바로 WebSocket입니다. WebSocket은 웹에서 클라이언트(브라우저)와 서버가

dachaes-devlogs.tistory.com

 

[WebSocket과 WebRTC] 실시간 통신, 어떤 기술을 써야 할까?

WebSocket과 WebRTC 웹에서 실시간 기능을 구현하려면 가장 먼저 떠오르는 기술이 WebSocket과 WebRTC입니다. 이 둘은 모두 실시간을 지원하지만, 사용하는 목적과 동작 방식이 크게 다릅니다.이 글에서

dachaes-devlogs.tistory.com

 


728x90
반응형