WebRTC์ ๋ํด์
WebRTC(Web Real-Time Communications)๋?
- WebRTC๋ ์๋ฒ๋ฅผ ์ต๋ํ ๊ฑฐ์น์ง ์๊ณ P2P๋ก ๋ธ๋ผ์ฐ์ ๋ ๋จ๋ง ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์ ์ ์น ํ์ค์ด๋ค.
- ์น์์ ์ค์๊ฐ ๋ฏธ๋์ด ์คํธ๋ฆผ์ ์ก์์ ํ ์ ์๋ ์ ์ผํ ํ์ค์ด๊ณ ๋ ์ ์ผํ P2P ํ์ค์ด๊ธฐ๋ ํ๋ค.
- ์ฝ๊ฒ ๋งํ์๋ฉด ์น ์ดํ๋ฆฌ์ผ์ด์ (์ต๊ทผ์๋ Android ๋ฐ IOS๋ ์ง์) ๋ฐ ์ฌ์ดํธ๋ค์ด ๋ณ๋์ ์ํํธ์จ์ด ์์ด ์์ฑ, ์์ ๋ฏธ๋์ด ํน์ ํ ์คํธ, ํ์ผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ธ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋ง๋ ๊ธฐ์ ์ด๋ค.
์์ ๊ทธ๋ฆผ์ ํตํ ์ค๋ช
๋ณดํต ๋ ๊ธฐ๊ธฐ๊ฐ ์ค์๊ฐ์ผ๋ก ์ํตํ๊ธฐ ์ํด์๋ WebRTC์์ ์ ๊ณตํ๋ MediaStream, RTPeerConnection, RTCDataChannel
๋ฑ์ API์ API๋ค์ ์ ์ ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋๋ก ์ฒ๋ฆฌํด ์ฃผ๋ ๊ณผ์ ์ธ Signaling
์ด๋ผ๋ ํ๋ก์ธ์ค๋ฅผ ํตํด ํต์ ์ ์กฐ์ ํด์ผํ๋ฉฐ, ๋คํธ์ํฌ ์ฃผ์ ๋ณํ๊ธฐ(NAT) ๋ฐ ๋ฐฉํ๋ฒฝ์ ๋์ฒํ๊ธฐ ์ํด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ Signaling ์๋ฒ
์ญ์ ํ์ํ๋ค. ๋ P2P ์ฐ๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์ ๋๋นํ ๋ฆด๋ ์ด ์๋ฒ(TURN)๊ฐ ํ์ํ๋ค.
- WebRTC๋ฅผ ์ฌ์ฉํด ์ฐ๊ฒฐ์ ๋งบ๊ณ , peer์ ๊ธฐ๊ธฐ์์ ๋ฏธ๋์ด๋ฅผ ๊ฐ์ ธ์ ๊ตํํ๋ค.
- Signaling์ ํตํด ํต์ ํ peer๊ฐ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋ค.(๋คํธ์ํฌ ์ ๋ณด, capability ์ ๋ณด, ์ธ์
์๋ฆฝ ๋ฑ)
- Signaling์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์
XHR์ Channel API
๋ฅผ ์ด์ฉํ๊ฑฐ๋ node ์๋ฒ์์Socket.io
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ ๋ฑ์ด ์๋ค. - Session control messages: ํต์ ์ ์ด๊ธฐํ, ์ข ๋ฃ, ๊ทธ๋ฆฌ๊ณ ์๋ฌ ๋ฆฌํฌํธ
- Network configuration : ICE ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด์ ์๋ก์ IP ์ ํฌํธ๋ฅผ ์ฐพ๋ ๊ณผ์
- Media capabilites : ๋ด ๋ธ๋ผ์ฐ์ ์ ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ฑ, ํด์๋ ๋ฑโ
- Signaling์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์
WebRTC ํ์ฉ ๋ถ์ผ
๊ธฐ๋ณธ์ ์ผ๋ก P2P ์คํธ๋ฆฌ๋ฐ ๊ธฐ์ ์์ ์ถ๋ฐํ์์ง๋ง, ์ต๊ทผ์๋ ๋ค์ํ ์ธํํธ ์๋น์ค๋ค๋ก ๋ฐ์ ํ์๋ค.
์ฉ์ด์ฌ์
- P2P(๋๋ฑ ๊ณ์ธต๊ฐ ํต์ ๋ง): peer-to-peer network์ ์ค์๋ง๋ก ์์์ ์๋ฒ์ ์ง์คํ๊ธฐ๋ณด๋ค๋ ๋ง๊ตฌ์ฑ์ ์ฐธ์ฌํ๋ ๊ธฐ๊ณ๋ค์ ๊ณ์ฐ๊ณผ ๋์ญํญ ์ฑ๋ฅ์ ์์กดํ์ฌ ๊ตฌ์ฑ๋๋ ํต์ ๋ง
- MediaStream: ์นด๋ฉ๋ผ์ ๋ง์ดํฌ ๋ฑ์ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ๊ทผ
- RTCPeerConnection: ์ํธํ ๋ฐ ๋์ญํญ ๊ด๋ฆฌ ๋ฐ ์ค๋์ค, ๋น๋์ค์ ์ฐ๊ฒฐ
- RTCDataChannel: ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ์ P2P ํต์
- Signaling:ํต์ ์ ์กฐ์จํ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ผ๋ จ์ ํ๋ก์ธ์ค or RTCPeerConnection๋ค์ด ์ ์ ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๊ฒ ์ฒ๋ฆฌํด ์ฃผ๋ ํ๋ก์ธ์ค
- Caller: ์์ฒญ์ ๋ฐ๊ฑฐ๋ ์ฃผ๋ ๋์? (๊ธฐ๊ธฐ์ ์ฑ, ๋ธ๋ผ์ฐ์ ๊ฐ์, ๋จ๋ง๊ธฐ๊ธฐ ๊ฐ)
- TURN ์๋ฒ: NAT ์ฃผ์์ ๋ฆด๋ ์ด๋ฅผ ์ฌ์ฉํ ์ํ๋ฅผ ์๋ฏธํ๋ฉฐ, ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค๊ณํ๋ ํ๋กํ ์ฝ
์ฐธ๊ณ ๋งํฌ
WebRTC ์์ฉ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ
Build the backend services needed for a WebRTC app
์ค์๊ฐ ํตํ ์ด๋ป๊ฒ ํ๋ ๊ฑฐ์ง : WebRTC ๊ธฐ์ด
WebRTC (Web Real-Time Communications)