WebRTC 란
WebRTC란
웹에서 별도 플러그인 없이 RTC 실시간 통신(Real time Communication) 하기 위한 Open API
ICE(Interactive Connectivity Establishment)
- Peer 간에 웹 브라우저를 연결해주는 프레임워크
Peer가 Private Ip를 가지는 경우 해결법 : Stun 서버 (session traversal utilities for NAT)
- Stun 서버로부터 public ip를 얻어 configuration에 담아 PeerConnection을 만든다.
Peer의 라우터가 Symmetric NAT 제한을 걸어둔 경우 해결법 : Turn 서버
- Traversal Using Relays around NAT
- Peer들이 Behind Symmetric NAT 상태로 설정되어 있는 경우
최초 1회 연결이 필요하나 방법이 없다.
- 이 경우 Public 망에 있는 TURN server를 통해 Peer가 Connection을 맺고
Turn Server가 relay 해주는 방식으로 우회를 한다.
- 성능이 좋지 않음에 따라 상용 App 제작시 서버(Peer)의 라우터 설정을 수정한다.
Stun 서버, Turn 서버는 ICE에 등록해두면
Candidate 결정(negotiate 협상)시 결과에 따라 자동 적용된다.
https://web.dev/webrtc-infrastructure/
Build the backend services needed for a WebRTC app
web.dev
RTCPeerConnection (Web API)
- 브라우저에 내장된 WebRTC 내부에서 많은 일을 수행한다.
- packet loss 처리, echo cancellation, bandwidth adaptivity 등
참고링크
- https://hpbn.co/webrtc/#real-time-network-transports
RTCDataChannel
- Peer간의 Data를 주고 받을 수 있는 Tunnel API
- WebSocket과 유사하지만 P2P방식이다.
- 샘플코드
> https://simpl.info/rtcdatachannel/
> https://github.com/samdutton/simpl/blob/gh-pages/rtcdatachannel/js/main.js
참고링크
- https://www.html5rocks.com/ko/tutorials/webrtc/basics/#toc-rtcdatachannel (WEB RTC)
- https://www.wowza.com/blog/the-role-of-webrtc-in-low-latency-media-streaming (WEB RTC)