게임에 참가한 유저 간의 화상통화 기능을 제공하기 위해 webRTC 기술을 도입하려고 한다.
WebRTC에 사용되는 기술은 여러 가지가 있지만 크게 3가지의 클래스에 의해서 실시간 데이터 교환이 일어난다.
MediaStream
— 카메라와 마이크 등의 데이터 스트림 접근RTCPeerConnection
— 암호화 및 대역폭 관리 및 오디오, 비디오의 연결RTCDataChannel
— 일반적인 데이터의 P2P 통신이 3가지의 객체를 통해서 데이터 교환이 이뤄지며 RTCPeerConnection들이 적절하게 데이터를 교환할 수 있게 처리해 주는 과정을 시그널링(Signaling)
이라고 한다. 시그널링은 P2P 스트리밍을 시작하기 전에 성공적으로 완료되어야 한다.
WebRTC에서 왜 서버가 필요한지 의문이 들 수 있다. 하지만 P2P로만 WebRTC 연결을 한다고 해도 서버가 필요한 경우가 있고 이 기술에서 서버는 다음과 같은 역할을 한다.
NAT(Network Address Translation) 은 기기에 공인 IP를 부여하는 기술이다. 라우터에 설정하는데, 라우터는 공인 IP 를 갖고, 라우터에 연결된 모든 기기는 사설 IP 를 갖는다. 기기가 요청할 것이 생기면, 라우터의 고유한 포트를 사용해서 사설 IP 에서 공인 IP 로 변환한다(translation). 어떤 라우터는 접근할 수 있는 노드를 제한 할 수 있다.