Web Real-Time Communication
클라이언트 웹 브러우저에 대한 지연 시간을 줄이는 것이 애플리케이션에 가장 중요할 때 가장 효과적이다.
영상 채팅 및 다자간 통화 소프트웨어가 가장 일반적인 사용 사례에 포함된다
사전 레코딩 또는 렌더링 되는 동영상 컨텐츠 제공과 같이 지연 시간이 용인되는 스트리밍의 경우에는 WebRTC가 덜 효과적이다.
- 브라우저 또는 휴대기기에 대한 짧은 지연 시간의 오디오 및 동영상 제공
- 바이너리 데이터 또는 키보드, 마우스, 게임 패드 입력과 같은 이벤트의 지연 시간이 짧은 스트리밍
- 브라우저 또는 휴대기기에 대한 게임 스트리밍 등
- 사전 녹화된 미디어나 렌더링된 미디오의 대규모 배포
- 최신 브라우저에서 지원되지 않는 동영상 형식 스트리밍
- 이전 브라우저와의 호환성
- WebRTC 기반의 화상 통화를 하기 위해서는 반드시 서로의 정보를 전달받아야 한다. 이때 시그널링 서버를 사용하며, 시그널링 서버는 각각의 클라이언트와 양방향 통신을 해야한다.
- 시그널링 이란?
시그널링은 통신 조정의 프로세스이다. WebRTC 어플리케이션이 'call'을 초기화하기 위해서 클라이언트가 정보를 교환한다.
시그널링 서버는 왜 필요한가? WebRTC는 Peer To Peer 통신으로, 실시간으로 데이터를 전송할 수 있기 떄문에, 지연없는 빠른 통신이 가능하다, 하지만 상대방의 주소를 어떻게 알 수 있을까?
상대방의 주소를 이미 알고 있다면? 또한 주소를 어딘가에 기록해놨다면? P2P로 직접 통신이 가능할 것이다. 하지만 상대방의 주소를 모르면 절대로 서로 통신할 수가 없다.
상대방의 정보를 어디선가 전달 받아야하는데 이런 이유로 인해서 시그널링 서버를 별도로 구축해야 한다, 물론 시그널링 서버는 상대방 주소를 전달받는 역할 외에, 다양한 기능을 수행하게 된다.
WebRTC는 비디오, 오디오 등의 데이터를 클라이언트 간에 직접 스트리밍 할 수 있어서, 네트워크 성능 비용이 크게 절감된다. 반면에 WebSocket 은 클라이언트와 서버 사이의 양방향 통신을 위해 설계되었고, 비디오 등의 데이터를 스트리밍 할 수는 있지만, WebRTC는 UDP를 사용한다. 어쨋든 화상회의 서비스에는 WebRTC를 사용하는게 좋겠다는 판단이지만, WebRTC는 모든 브라우저에서 지원하느 것은 아니라는 사실도 알아 두어야 한다.
기술에는 정답은 없다.