์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ์ค๋ผํด
- ํ๋ก๊ทธ๋๋ฐ
- ๋ฐ์ํ
- ํ์ด์ฌ
- ์๋ฐ
- ์ฝ๋ฉ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์ฑ
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ์ค๋ธ์
- Python
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- Java
- ์๋ฐ์คํฌ๋ฆฝํธ
- database
- ๋ผํ๋ผ์ค์๋ง๋
- ์ปดํจํฐ๊ณผํ
- ๊ฐ๋ฐ
- ๋ฆฌ์กํธ
- ์ํ
- ์นํผ๋ธ๋ฆฌ์ฑ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- css
- K๋ฐฐํฐ๋ฆฌ
- html
- ComputerScience
- JavaScript
- ๋ ์
- Today
- Total
JiYoung Dev ๐ฅ
[์ค์ -์ค๋น] WebRTC(Web Real-Time Communication) API ๋ณธ๋ฌธ
[์ค์ -์ค๋น] WebRTC(Web Real-Time Communication) API
Shinjio 2023. 8. 16. 11:43
์ ์
- ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฌ์ดํธ๊ฐ ์ค๊ฐ์ ์์ด ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ค๋์ค๋ ์์ ๋ฏธ๋์ด๋ฅผ ์คํธ๋ฆผํ๊ณ , ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋๋ก ํ๋ ๊ธฐ์
- ์๋ฒ๋ฅผ ์ต๋ํ ๊ฑฐ์น์ง ์๊ณ P2P(Peer-to-Peer Network)๋ก ๋ธ๋ผ์ฐ์ ๋ ๋จ๋ง๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์ ์ ์น ํ์ค\
- Zoom, ๊ตฌ๊ธ Meet, ํ์ด์ค๋ถ ๋ฉ์ ์ ๋ฑ์์ ์ฌ์ฉ
ํน์ง
- ์น์์ ์ฌ์ฉํ ์ ์๋ ์ ์ผํ P2P ๊ธฐ์ ๋ก ๊ฐ๊ฐ์ ๊ธฐ๊ธฐ๊ฐ ์๋ฒ์ ๋์ ์์ด ์ฐ๊ฒฐ๋๊ธฐ ์ํด ์ฐ๊ฒฐ์ ๋์์ฃผ๋ ์๋ฒ(Signaling)๊ณผ P2P ์ฐ๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์ ๋๋นํ ๋ฆด๋ ์ด ์๋ฒ(TURN)๊ฐ ํ์ํจ
- UDP(User Datagram Protocol) ๊ธฐ๋ฐ์ ์คํธ๋ฆฌ๋ฐ ๊ธฐ์
- WebRTC๋ฅผ ๊ตฌ์ฑํ๋ ์ผ๋ จ์ ํ์ค๋ค์ ํ๋ฌ๊ทธ์ธ์ด๋ ์ 3์ ์ํํธ์จ์ด ์ค์น ์์ด ์ข ๋จ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ์ ํ์ ํ์๊ฐ ๊ฐ๋ฅ
- WebRTC๋ ์ํธ ์ฐ๊ด๋ API์ ํ๋กํ ์ฝ๋ก ๊ตฌ์ฑ๋์ด ํจ๊ป ์๋
- ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅธ ์ฝ๋ฑ ๋ฐ ๊ธฐํ ๋ฏธ๋์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์ ์์ค์ด ๋ค๋ฅด๋ฏ๋ก Google์์ ์ ๊ณตํ๋ Adaptor.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒ → ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์ ํด๊ฒฐ์ ์ํด์ ์ฌ์ฉ!
- ๊ตฌ๊ธ์ด ์คํ์์ค๋ก ์ฒ์ ๋ง๋ค์๊ณ , W3C์์ ์ด์์ ์ ์ํ ๊ธฐ์ ์คํ์ผ๋ก ํ๋ฌ๊ทธ์ธ ์ค์น ์์ด ์ค์๊ฐ์ผ๋ก ํต์ ํ ์ ์๋๋ก ์ค๊ณ๋ API
์ฌ์ฉ๋ฒ
๋ ํผ์ด ๊ฐ์ ์ปค๋ฅ์ ์ RTCPeerConnection ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ด๋ฃจ์ด์ง
์ปค๋ฅ์ ์ด ์ด๋ฃจ์ด์ง๊ณ ์ด๋ฆฌ๋ฉด, ๋ฏธ๋์ด ์คํธ๋ฆผ(MediaStream)๊ณผ ๋ฐ์ดํฐ ์ฑ๋(DataChannel)์ด ์ปค๋ฅ์ ์ ์ฐ๊ฒฐํ ์ ์์
๋ํ ์์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ(์ด๋ฏธ์ง, ํ ์คํธ, ํ์ผ ๋ฑ)์ RTCDataChannel ์ธํฐํ์ด์ค๋ฅผ ํตํด ํผ์ด๋ค ๊ฐ์ ๊ตํ ๊ฐ๋ฅ
RTCPeerConnection
๋ก์ปฌ ์ปดํจํฐ์ ์๊ฒฉ ํผ์ด ๊ฐ์ WebRTC ์ฐ๊ฒฐ
RTCDataChannel
์ฐ๊ฒฐ๋ ๋ ํผ์ด๊ฐ์ ์๋ฐฉํฅ ๋ฐ์ดํฐ ์ฑ๋
RTCDataChannelEvent
RTCDataChannel์ RTCPeerConnection์ ์ฐ๊ฒฐํ๋ ๋์ ๋ฐ์ํ๋ ์ด๋ฒคํธ
์ด ์ธํฐํ์ด์ค์ ํจ๊ป ์ ์ก๋๋ ์ ์ผํ ์ด๋ฒคํธ๋ datachannel
RTCSctpTransport
์คํธ๋ฆผ ์ ์ด ์ ์ก ํ๋กํ ์ฝ(Stream Control Transmission Protocol)
P2P ์ ์ฐจ
1. ๊ฐ ๋ธ๋ผ์ฐ์ ๊ฐ P2P ์ปค๋ฎค๋์ผ์ด์ ์ ๋์
2. ์๋ก์ ์ฃผ์๋ฅผ ๊ณต์
3. ๋ณด์ ์ฌํญ ๋ฐ ๋ฐฉํ๋ฒฝ ์ฐํ
4. ๋ฉํฐ๋ฏธ๋์ด ๋ฐ์ดํฐ ์ค์๊ฐ ๊ตํ
๊ด๋ จ ๊ฐ๋
์๊ทธ๋๋ง(Signaling)
์๋๋ฐฉ๊ณผ์ ์ฐ๊ฒฐ์ ์ํด์๋ ์๋๋ฐฉ์ ๋คํธ์ํฌ ์ ๋ณด์ ์๋๋ฐฉ์ด ๋ณด๋ด๋ ๋ฏธ๋์ด ๋ฐ์ดํฐ ์ ๋ณด ๋ฑ์ด ํ์ํจ
์ธ์ ์ ์ด ์ ๋ณด : ํต์ ์ ์ด๊ธฐํ, ์ข ๋ฃ, ์๋ฌ
๋คํธ์ํฌ ์ ๋ณด : IP, PORT
๋ฏธ๋์ด ์ ๋ณด : SDP ํ์์ผ๋ก ์ฝ๋ฑ, ํด์๋, ์ก์์ ์ฌ๋ถ๋ฅผ ์๋ต ๋ชจ๋ธ(Offer ↔ Answer)์ ํตํด ํ์
์ด๋ฅผ ์ํด ์งํํ๋ ๊ฒ์ด ์๊ทธ๋๋ง
์๊ทธ๋๋ง ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ์๊ทธ๋๋ง์ ํตํด Peer๊ฐ ๋คํธ์ํฌ ๋ฐ ๋ฏธ๋์ด ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ตํ
NAT(Network Address Translation)
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ๋จ๋ง์ ํ๋์ ๊ณต์ธ IP๋ฅผ ์ฌ๋ฌ๊ฐ์ ์ฌ์ค IP๋ก ์ชผ๊ฐ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ธ๋ถ์ ํต์ ํ ๋์๋ ๊ณต์ธ IP๋ก ํต์ ์ ์งํ
NAT๋ฅผ ํตํด ๋ด๋ถ ๋คํธ์ํฌ์ ์กด์ฌํ๋ ์ฌ์ค IP์ ํฌํธ๋ฒํธ๋ฅผ ์ธ๋ถ ๋คํธ์ํฌ์ ํต์ ํ ๋ ์ฌ์ฉํ๋ ๊ณต์ธ IP ๋ฐ ํฌํธ์ ๋งคํํ์ฌ ์ ์ฅํด๋์์ผ๋ก์จ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํด์ค
TURN(Traveral Using Relays around NAT)
๋ช๋ช์ ๋ผ์ฐํฐ๋ค์ peer๋ค์ด ์ค์ง ์ด์ ์ ์ฐ๊ฒฐํ ์ ์๋ ์ฐ๊ฒฐ๋ค๋ง ํ์ฉ. ์ด์ ๊ฐ์ Symmetric NAT ์ ํ์ ์ฐํํ๊ธฐ ์ํด TURN ์๋ฒ๋ฅผ ์ฌ์ฉ
ICE(Interactive Connectivity Establishment)
์๋๋ฐฉ๊ณผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์๊ธฐ ์ํ ๊ณผ์ ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ
์ฐธ๊ณ ์๋ฃ
https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API
https://wormwlrm.github.io/2021/01/24/Introducing-WebRTC.html
https://medium.com/@hyun.sang/webrtc-webrtc%EB%9E%80-43df68cbe511
'full stack > ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํต์ฌํ๋ก์ ํธ] DB๋ฉํ ๋ง (2023.06.08) (0) | 2023.06.08 |
---|---|
์น ๊ฐ๋ฐ ์ถ์ฒ ์ฌ์ดํธ ๋ชจ์ (0) | 2023.04.28 |