์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ฐฐ์์ ๋ฐฐ์
- ์นํผ๋ธ๋ฆฌ์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ
- ๊ฐ๋ฐ
- ๋ฐ์ํ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- html
- ๋๊ฐ
- ๊ฐ์ดํ ์ข ๋ญ๊ฐ๋น
- ์นดํ๋๊ฐ
- JavaScript
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- database
- ์ ๋ฆฌํธ๋ฆฌํธ
- Python
- ์ฝ๋ฉ
- ์ํ
- ์ฑ
- ์ค๋ผํด
- ํ๋ก๊ทธ๋๋ฐ
- ์ํ์ฃผ
- ๋ ์
- css
- ํ์ด์ฌ
- ์ค๋ธ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- Java
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- Today
- Total
JiYoung Dev ๐ฅ
WebSocket๊ณผ WebRTC ๋น๊ตํ๋ฉฐ ์ดํดํ๊ธฐ ๋ณธ๋ฌธ
2025๋ ์ํด ์๋ก์ด ๋ชฉํ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ๋ก ํ๋ค.
๋์ค์ฝ๋ ํด๋ก ์ฝ๋ฉ์ธ๋ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ํ๋ ค๋ค ๋ณด๋ WebSocket๊ณผ WebRTC์ ๋ํด์ ํ์๋ก ์๊ณ ์์ด์ผ ํด์ ๋ด ๋๋ฆ๋๋ก ๋จธ๋ฆฌ์ ์ ๋ค์ด์ค๋ ์์๋๋ก ์ ๋ฆฌํด ๋ณด์๋ค.
์๋ ๋ด์ฉ์์ ๊ตฌํํ๊ฑฐ๋ ์๋ฃ๋ฅผ ์ฐพ๋ค๊ฐ ํ๋ฆฐ ๋ถ๋ถ์ด๋ ์ถ๊ฐํ ๋ด์ฉ์ด ์์ผ๋ฉด ๊ณ์ํด์ ์ถ๊ฐํ ์์ ์ด๋ค.
- ์น์ ํต์ ๋ฐฉ์์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค.
- ๋ํ์ ์ผ๋ก HTTP, Websocket, Polling, gRPC, SSE, GraphQL ๋ฑ์ด ์๋๋ฐ, ๊ฐ๊ฐ์ ๋ฐฉ์๋ง๋ค ํน์ง์ด ์์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ฑ์ ๋ฐ๋ผ ์๋ง์ ๊ฒ์ ์ ํํ์ฌ ์ฌ์ฉํ๋ค.
- HTTP๋ ์น ํต์ ์ ๊ธฐ๋ณธ ํ๋กํ ์ฝ๋ก ์์ฒญ-์๋ต ๋ฐฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ํ์ ์ธ ํต์ ํ๋กํ ์ฝ์ด๋ค.
- WebSocket์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ์ง์ํ๋ ํ๋กํ ์ฝ๋ก ์ค์๊ฐ ์ฑํ , ์๋ฆผ ์๋น์ค ๋ฑ์ ์ ๊ณตํ ๋ ์ฌ์ฉํ๋ค.
- WebRTC ๋ํ HTTP, WebSocket๊ณผ ๊ฐ์ ํต์ ํ๋กํ ์ฝ ์ค ํ๋๋ก HTTP์ WebSocket์ด ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ํต์ ์ ์ํ ๋ฐฉ์์ธ ๋ฐ๋ฉด, WebRTC๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ์ ์ธ ์ค์๊ฐ ํต์ ์ ์ง์ํ๋ ๊ธฐ์ ์ด๋ค.
- WebRTC๋ P2P ๋ฐฉ์์ผ๋ก ์ค๊ณ๋์ด, ์ค์๊ฐ ์์ ํตํ๋ ํ์ผ ์ ์ก ๋ฑ ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ง์ ๋ธ๋ผ์ฐ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
ํต์ ๋ฐฉ์ | ์ค๋ช | ์ฃผ์ ํน์ง | ์ฉ๋ | WebAPI |
HTTP | ํด๋ผ์ด์ธํธ-์๋ฒ ์์ฒญ-์๋ต ๋ฐฉ์ | ๋จ๋ฐฉํฅ ํต์ , ๋ฌด์ํ์ฑ | ์น ํ์ด์ง ์์ฒญ, REST API ํธ์ถ | XMLHttpRequest, fetchAPI |
WebSocket | ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ ์ง์์ ์ธ ์๋ฐฉํฅ ํต์ | ์๋ฐฉํฅ, ์ง์ ์ฐ๊ฒฐ | ์ค์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ , ์ฑํ ์๋น์ค | websocket |
WebRTC | ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ์ ์ธ P2P ํต์ | ์ค์๊ฐ ์์ฑ/์์ ํตํ, ๋ฐ์ดํฐ ์ ์ก | ์์/์์ฑ ํตํ, ํ์ผ ๊ณต์ | webrtc |
์น์์ผ(WebSocket)
- HTML5 ํ์ค ๊ธฐ์ ๋ก ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ์ฌ์ด์ ๋์ ์ธ ์๋ฐฉํฅ ์ฐ๊ฒฐ ์ฑ๋์ ๊ตฌ์ฑ
- Websocket API๋ฅผ ํตํด ์๋ฒ๋ก ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ณ , ์์ฒญ ์์ด ์๋ต์ ๋ฐ์์ค๋ ๊ฒ์ด ๊ฐ๋ฅ
1. HTTP vs ์น์์ผ ์ฐจ์ด์
- Websocket ํ๋กํ ์ฝ์ ์ ์ ํ๋ฆฝ์ HTTP๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ทธ ํ์ ํต์ ์ WebSocket ๋ ์์ ํ๋กํ ์ฝ๋ก ์ด๋ฃจ์ด์ง
- header๊ฐ ์๋นํ ์์ overhead๊ฐ ์ ์ ํน์ง์ด ์์
- ์ฅ์๊ฐ ์ ์์ ์ ์ ๋ก ํ๊ธฐ ๋๋ฌธ์, ์ ์ํ ์ํ๋ผ๋ฉด ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ ์ก์ ์ด ๊ฐ๋ฅ
- ๋ฐ์ดํฐ์ ์ก์ ๊ณผ ์์ ์ ๊ฐ๊ฐ ์ปค๋ฅ์ ์ ๋งบ์ ํ์๊ฐ ์์ด, ํ๋์ ์ปค๋ฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ ์์
- ํต์ ์ URL์ ws:// ํํ
2. socket.io
- ์น์์ผ์ HTML5์ ๊ธฐ์ ์ด๊ธฐ ๋๋ฌธ์ ์ค๋๋ ๋ฒ์ ์ ์น ๋ธ๋ผ์ฐ์ ๋ ์น์์ผ์ ์ง์ํ์ง ์์
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ธฐ์ ์ค ํ๋
- ์นํ์ด์ง๊ฐ ์ด๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์น์์ผ์ ์ง์ํ๋ฉด ์น์์ผ ๋ฐฉ์์ผ๋ก ๋์ํ๊ณ , ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ผ๋ฉด ์ผ๋ฐ http๋ฅผ ์ด์ฉํด์ ์ค์๊ฐ ํต์ ์ ํ๋ด
- node.js ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๊ธฐ์ ๋ก, ๊ฑฐ์ ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ฐ์ผ ์ฅ์น๋ฅผ ์ง์ํ๋ ์ค์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- 100% ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ตฌํ๋์ด ์์ผ๋ฉฐ, ํ์กดํ๋ ๋๋ถ๋ถ์ ์ค์๊ฐ ์น ๊ธฐ์ ๋ค์ ์ถ์
- ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ง์ํ๋ ์น์์ผ ๋ฒ์ ์ด ๋ค๋ฅด๋ฉฐ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ ์์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ง์ด ์ฌ์ฉ
3. socket.io vs WebSocket
ํญ๋ชฉ | socket.io | webSocket |
์ค์น | ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ (socket.io) | ๋ธ๋ผ์ฐ์ ๋ด์ฅ API ์ฌ์ฉ |
ํด๋ฐฑ ์ง์ | ์ง์ (๋กฑํด๋ง ๋ฑ) | ํด๋ฐฑ ์์ (WebSocket ๋ฏธ์ง์ ๋ธ๋ผ์ฐ์ ๋ถ๊ฐ) |
์ฌ์ฉ ํธ์์ฑ | ์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์ ์ผ๋ก ์ง๊ด์ | ๋ฉ์๋ ํธ์ถ ๋ฐ ์๋ ๊ตฌํ ํ์ |
์ถ๊ฐ ๊ธฐ๋ฅ | ์ธ์ฆ, ๋ธ๋ก๋์บ์คํธ, ๋ฃธ/๋ค์์คํ์ด์ค ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ์ ๊ณต | ์ต์ ๊ธฐ๋ฅ ์ ๊ณต |
์ฑ๋ฅ | ์ฝ๊ฐ์ ์ค๋ฒํค๋ ๋ฐ์ | ๋ ๊ฐ๋ฒผ์ |
- socket.io: ์ฑํ , ์๋ฆผ ์์คํ , ๊ฒ์ ๊ฐ์ ๋ณต์กํ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
- Websocket: ๋จ์ํ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ(์: ์ฃผ๊ฐ, ๋ ์จ์ ๋ณด)
4. ๋์์๋ฆฌ
1) ํธ๋์์ดํฌ(handshake)
์น์์ผ ์ฐ๊ฒฐ์ HTTP๋ฅผ ํตํด ์์๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์น์์ผ ์ฐ๊ฒฐ์ ์์ฒญํ๋ฉด, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ผ๋ จ์ ํธ๋์์ดํฌ ๊ณผ์ ์ด ๋ฐ์ํ๋ค. ํด๋ผ์ด์ธํธ๋ HTTP Upgrade ์์ฒญ ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ์น์์ผ ์ฐ๊ฒฐ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ , ์๋ฒ๋ ์ด๋ฅผ ์น์ธํ๋ฉฐ 101 Switching Protocols ์๋ต์ ๋ณด๋ธ๋ค.
2) ์ฐ๊ฒฐ ์ ์ง(Keeping Connection)
ํธ๋์์ดํฌ ์ดํ์๋ TCP ๊ธฐ๋ฐ์ ์ฐ๊ฒฐ์ด ์ค์ ๋๋ฉฐ, ์ด ์ฐ๊ฒฐ์ ์ง์์ ์ผ๋ก ์ ์ง๋๋ค. ์ด๋ก์จ ์๋ฐฉํฅ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํด์ง๋ค.
3) ๋ฐ์ดํฐ ๊ตํ(Data Exchange)
์ฐ๊ฒฐ์ด ํ๋ฆฝ๋๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ค. ๋ฐ์ดํฐ๋ ๋ฉ์์ง์ ํํ๋ก ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ์ด ๋ฉ์์ง๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค. ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ๋ ์ธ์ ๋ ์ง ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์์ผ๋ฉฐ, ์๋๋ฐฉ์ ์ด์ ์๋ตํ ์ ์๋ค.
4) ์ฐ๊ฒฐ ์ข ๋ฃ(Connection Termination)
์น์์ผ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ๊ฐ ์ข ๋ฃ ํ๋ ์์ ๋ณด๋ด๋ฉด ๋๋ค. ์ด ํ๋ ์์ ์ฐ๊ฒฐ์ ๋ช ์์ ์ผ๋ก ๋ซ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ๋ํ, ์ฐ๊ฒฐ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ์๋ ๋คํธ์ํฌ ๋ฌธ์ ๋๋ ๋ค๋ฅธ ์ด์ ๋ก ์ธํด ์ฐ๊ฒฐ์ด ๋์ด์ง ๊ฒ์ผ๋ก ํ๋จ๋๋ค.
5) ํ๋กํ ์ฝ๊ณผ ๋ฐ์ดํฐ ํ์(Protocol and Data Format)
์น์์ผ ํ๋กํ ์ฝ์ ํค๋ ์ ๋ณด๋ฅผ ์ต์ํํ์ฌ ๋ฎ์ ์ค๋ฒํค๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค. ๋ฉ์์ง๋ ํ๋ ์ ๋จ์๋ก ๋๋ ์ง๋ฉฐ, ๊ฐ ํ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ฑฐ๋ ์ปจํธ๋กค ๋ช ๋ น์ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
5. ์น์์ผ ํ๋กํ ์ฝ์ ์ฒ ํ
- ์น์์ผ์ ๊ธฐ์กด์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋๋ Origin ์ ์ฑ ์ ์ค์ํ๋ค.
- ํ ๊ฐ์ ํฌํธ ๋ฐ IP์ ์ฌ๋ฌ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ์งํ๊ธฐ ์ํด ์ฃผ์ ๋ฐ ํ๋กํ ์ฝ ๋ค์ด๋ฐ์ ์ฌ์ฉํ๋ค.
- HTTP ๋ฑ์ ํ๋กํ ์ฝ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก TCP ์์์ ๊ณ์ธตํ๋์ด ๋์ํ๋ฏ๋ก ์ดํ TCP๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋์ผํ์ง๋ง, ๊ธธ์ด์ ์ ํ์ด ์๋ค.
- ํ๋ก์์ ๊ฐ์ ์ค์ฌ์์๋ ์ํํ๊ฒ ๋์ํ ์ ์๋๋ก ์ข ๋ฃ(closing) handshake ๊ณผ์ ์ ์ฌ์ฉํ๋ค.
6. ๊ตฌ์ฑ
- ํด๋ผ์ด์ธํธ
- ์๋ฒ
WebRTC
- WebRTC(Web Real-Time Communication)์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฌ์ดํธ๊ฐ ์ค๊ฐ์ ์์ด ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ค๋์ค๋ ์์ ๋ฏธ๋์ด๋ฅผ ํฌ์ฐฉํ๊ณ ๋ง์๋๋ก ์คํธ๋ฆผ ํ ๋ฟ ์๋๋ผ, ์์์ ๋ฐ์ดํฐ๋ ๊ตํํ ์ ์๋๋ก ํ๋ ๊ธฐ์
- WebRTC๋ ์ค๊ฐ์ ์์ด ๋ธ๋ผ์ฐ์ ๊ฐ์ P2P๋ก ์ฐ๊ฒฐํ๋ ๊ธฐ์ ์ด๋ฏ๋ก ๋น ๋ฅธ ์๋๊ฐ ๋ณด์ฅ๋๊ณ , HTTPS๊ฐ ๊ฐ์ ๋๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ํ ๋ณด์์ด ๋ณด์ฅ๋๋ค.
- WebRTC๋ ๊ตฌ๊ธ์ด ์ฃผ๋ํ ์คํ์์ค ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์น ํ์ค์ด๊ธฐ ๋๋ฌธ์ ํนํ ํฌ๋กฌ์์ ํธํ์ฑ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ด์ดํญ์ค์ ์คํ๋ผ ๋ฑ์ด WebRTC๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ํ๊ณ ์๋ค. ํํธ ์ฌํ๋ฆฌ ์ญ์ WebKit ๊ธฐ๋ฐ ๋ธ๋ผ์ฐ์ ์ด๊ธฐ ๋๋ฌธ์ WebRTC๊ฐ ์ง์๋๊ธฐ๋ ํ์ง๋ง, ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ๋นํด ํธํ์ฑ์ด ๋จ์ด์ง๋ ํธ์ด๋ค.
- ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์ ํด๊ฒฐ์ ์ํด์๋ adapter.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ํ์์ ์ด๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ shim ํจํด ๋ฐ ํด๋ฆฌํ์ ์ด์ฉํด ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์ํ ์ ์๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๋ฅผ ์ฌ์ ์ ์ฒ๋ฆฌํด์ค๋ค.
1. P2P ์ ์ฐจ
1) ๊ฐ ๋ธ๋ผ์ฐ์ ๊ฐ P2P ์ปค๋ฎค๋์ผ์ด์ ์ ๋์
2) ์๋ก์ ์ฃผ์๋ฅผ ๊ณต์
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ํต์ ์ ์ํด์๋ ๊ฐ๊ฐ ํ์ฌ ์ฐ๊ฒฐ๋ ๋ผ์ฐํฐ์ ๊ณต์ธ IP ์ฃผ์์ ํฌํธ(์ฌ์ค IP ๋งค์นญ)๋ฅผ ์์์ผ ํ๋ค.
- ํ์ง๋ง ์ด๋ค ๋ผ์ฐํฐ๋ค์ ํน์ ์ฃผ์๋ ํฌํธ์์ ์ฐ๊ฒฐ์ ์ฐจ๋จํ๋ ๋ฐฉํ๋ฒฝ ์ค์ ์ด ๋์ด ์์ ์ ์๋ค. ๋ฐ๋ผ์ ๋ผ์ฐํฐ๋ฅผ ํต๊ณผํด์ ์ฐ๊ฒฐํ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ณผ์ ์ NAT ํธ๋๋ฒ์ (NAT traversal)์ด๋ผ๊ณ ํ๋ค.
3) ๋ณด์ ์ฌํญ ๋ฐ ๋ฐฉํ๋ฒฝ ์ฐํ
- NAT ํธ๋๋ฒ์
๋ฐฉ๋ฒ
- STUN ์๋ฒ(Sesstion Traversal Utilites for NAT)
- ๋จ๋ง์ด ์์ ์ ๊ณต์ธ IP ์ฃผ์์ ํฌํธ๋ฅผ ํ์ธํ๋ ๊ณผ์ ์ ๋ํ ํ๋กํ ์ฝ ⇒ ์์ ์ ๊ณต์ธ IP์ ํฌํธ ์ฐพ์
- TURN ์๋ฒ(Traversal Using Relay NAT)
- ๋ฐฉํ๋ฒฝ ์ ์ฑ ์ผ๋ก ์ธํด STUN ์๋ฒ๋ก ์์ ์ ์ฃผ์๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ๋คํธ์ํฌ ๋ฏธ๋์ด๋ฅผ ์ค๊ฐํ๋ ์๋ฒ ์ฌ์ฉ → ๊ตฌ์กฐ์ P2P๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํ์ฐ์ ์ผ๋ก ์ง์ฐ ๋ฐ์(์ตํ์ ์๋จ)
- STUN ์๋ฒ(Sesstion Traversal Utilites for NAT)
- STUN, TURN ์๋ฒ๋ฅผ ์ด์ฉํด ์์ ์ ์ฃผ์ ํ๋ >> ํ๋ณด ์ฐพ๊ธฐ
- ํ๋ณด ์ฐพ๊ธฐ ๊ฒฐ๊ณผ
- ์์ ์ ์ฌ์ค IP์ ํฌํธ ๋๋ฒ
- ์์ ์ ๊ณต์ธ IP์ ํฌํธ ๋๋ฒ(STUN, TURN ์๋ฒ์์ ํ๋)
- TURN ์๋ฒ์ IP์ ํฌํธ ๋๋ฒ(TURN ์๋ฒ์์ ํ๋)
- ํ๋ณด ์ฐพ๊ธฐ ๋ฐฉ๋ฒ → ICE(Interactive Connectivity Establishment) ํ๋ ์์ํฌ ํ์ฉ
- ICE: ๋ ๊ฐ์ ๋จ๋ง์ด P2P ์ฐ๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋๋ก ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ฃผ๋ ํ๋ ์์ํฌ
- ํ๋ณด ์ฐพ๊ธฐ ๊ฒฐ๊ณผ
4) ๋ฉํฐ๋ฏธ๋์ด ๋ฐ์ดํฐ ์ค์๊ฐ ๊ตํ
- SDP(Session Description Protocol)
- WebRTC์์ ์คํธ๋ฆฌ๋ฐ ๋ฏธ๋์ด์ ํด์๋๋ ํ์, ์ฝ๋ฑ ๋ฑ์ ๋ฉํฐ๋ฏธ๋์ด ์ปจํ ์ธ ์ ์ด๊ธฐ ์ธ์๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์ฑํํ ํ๋กํ ์ฝ
2. WebRTC ์ํคํ ์ฒ
1) Signaling Server
์ ์ ๊ฐ ์ฐ๊ฒฐ์ ํ๊ธฐ์ํด ์๊ตฌ๋๋ ์ ๋ณด๋ค์ ๊ตํํ๋๋ก ๋์์ค
SDP, ICE ๋ฑ์ ์ ๋ณด๋ฅผ ๊ตํํ๋๋ฐ ์ฌ์ฉ
์๊ทธ๋๋ง์ ํ ๋ WebSocket ๋๋ XMLHttpRequest ๋ฑ ์ฌ์ฉ ๊ฐ๋ฅ
2) STUN Server
ICE Candidate์ ๋ํ ์ ๋ณด๋ฅผ ์ฃผ๋ ์๋ฒ
3) TURN Server
P2P ํต์ ์ ์คํจํ์ ๋ ์ฌ์ฉํ ์ ์๋ ์๋ฒ
4) ๋ฏธ๋์ด ์๋ฒ
P2P ์ฐ๊ฒฐ๋ก 3์ธ, 4์ธ ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์์ ์ธ์์ ๋ฐ์ดํฐ ์ก์์ ์ ์ง์ํ๊ฒ ๋๋ฉด ํด๋ผ์ด์ธํธ ์ธก๋ฉด์์์ ๊ณผ๋ถํ๊ฐ ์ฌํ๊ฒ ์ค๊ธฐ ๋๋ฌธ์ ๊ถ์ฅํ์ง ์๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์ ํด๊ฒฐ์ฑ ์ผ๋ก ๋์จ ๊ฒ์ด SFU์ MCU ๋ฐฉ์์ ๋ฏธ๋์ด ์๋ฒ๋ฅผ ๋๋ ๊ฒ์ด๋ค.
Mesh
- ํผ์ด ๊ฐ์ offer/answer ์ ๋ณด ์ค๊ณ → ์ฒ์ WebRTC๊ฐ ํผ์ด ๊ฐ์ ์ ๋ณด๋ฅผ ์ค๊ณํ ๋๋ง ์๋ฒ์ ๋ถํ ๋ฐ์
- ํผ์ด ์ฐ๊ฒฐ ์๋ฃ ํ์๋ ์๋ฒ์ ๋ณ๋ ๋ถํ ์์
- 1:1 ์ฐ๊ฒฐ์ ์ ํฉ
- ์๋ฒ ๋ถํ๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์์์ด ์ ๊ฒ ๋ ๋ค.
- ํผ์ด๊ฐ ์ง์ ์ฐ๊ฒฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๊ธฐ ๋๋ฌธ์ ์ค์๊ฐ์ฑ์ด ๋ณด์ฅ๋๋ค.
- N:N ๋๋ N:M ์ฐ๊ฒฐ์์ ํด๋ผ์ด์ธํธ์ ๊ณผ๋ถํ๊ฐ ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํจ. ์๋ฅผ ๋ค์ด, ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 5์ธ์ด WebRTC ์ฐ๊ฒฐ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด Uplink(๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ๋ณด๋ด๋ ๊ฐ์) 4๊ฐ, Downlink(์ฐ๊ฒฐ๋ ๋ค๋ฅธ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ฐ ๋์๊ฒ ๋ค์ด์ค๋ ๊ฐ์) 4๊ฐ๋ก ์ด 8๊ฐ์ ๋งํฌ๋ฅผ ์ ์งํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ก์์
SFU(Selective Forwarding Unit) ์๋ฒ
- ์ข ๋จ ๊ฐ ๋ฏธ๋์ด ํธ๋ํฝ์ ์ค๊ณํ๋ ์ค์ ์๋ฒ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ ํผ์ด๊ฐ ์ฐ๊ฒฐ์ด ์๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํผ์ด ์ฐ๊ฒฐ
- 1:1, 1:N, N:M ๋ฑ ๋ชจ๋ ์ฐ๊ฒฐ ํ์์์ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ํ์ ์์ด ์๋ฒ์๊ฒ๋ง ์์ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ๋๋ค.
- ํ์ง๋ง 1:N, N:N ํน์ N:M ํ์์ด๋ผ๋ฉด ์๋๋ฐฉ์ ์๋งํผ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ํผ์ด๋ฅผ ์ ์งํด์ผ ํ๋ค.
- 1:N ํ์ ๋๋ ์๊ท๋ชจ N:M ํ์์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ์ ์ ํฉ
- ๋ฐ์ดํฐ๊ฐ ์๋ฒ๋ฅผ ๊ฑฐ์น๊ณ Mesh ๋ฐฉ์๋ณด๋ค ๋๋ฆฌ์ง๋ง ๋น์ทํ ์์ค์ ์ค์๊ฐ์ฑ ์ ์งํ๋ฉด์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ ๋ถํ ์ค์ด๋ ๋ค.
- ์๊ทธ๋๋ง ์๋ฒ๋ณด๋ค ์๋ฒ ๋น์ฉ ์ฆ๊ฐ
- ๋๊ท๋ชจ์ผ ๊ฒฝ์ฐ ์ฌ์ ํ ํด๋ผ์ด์ธํธ๊ฐ ๋ง์ ๋ถํ ๊ฐ๋น
MCU(Multi-point Control Unit) ์๋ฒ
- ๋ค์์ ์ก์ถ ๋ฏธ๋์ด๋ฅผ ์ค์ ์๋ฒ์์ ํผํฉ ๋๋ ๊ฐ๊ณตํ์ฌ ์์ ์ธก์ผ๋ก ์ ๋ฌํ๋ ์ค์ ์๋ฒ ๋ฐฉ์. ์๋ฅผ ๋ค์ด 5์ธ์ด WebRTC ์ฐ๊ฒฐ์ ํ๋ค๋ฉด ์์ ์ ์ ์ธํ ๋ค๋ฅธ 4์ธ์ Vedio ๋ฐ์ดํฐ๋ฅผ ํ๋์ Video ๋ฐ์ดํฐ๋ก ํธ์งํ๊ณ , audio ๋ฐ์ดํฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํธ์งํ์ฌ ํ ๋ช ์๊ฒ ๋ณด๋ธ๋ค. ์ด ์์ ์ ๋จ์ 4๋ช ์๊ฒ๋ ๋์ผํ๊ฒ ์ ์ฉํ๋ค.
- ํด๋ผ์ด์ธํธ ํผ์ด๊ฐ ์ฐ๊ฒฐ์ด ์๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํผ์ด ์ฐ๊ฒฐ
- ๋ชจ๋ ์ฐ๊ฒฐ ํ์์์ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ํ์ ์์ด ์๋ฒ์๊ฒ๋ง ์์ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ๋๋ค. (uplink 1๊ฐ)
- ๋ชจ๋ ์ฐ๊ฒฐ ํ์์์ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ฒฐ๋ ์ฌ์ฉ์์ ์์ ์๊ด์์ด ์๋ฒ์๊ฒ์ ํ๋์ ํผ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด ๋๋ค. (downlink 1๊ฐ)
- ์ค์ ์๋ฒ์ ๋์ ์ปดํจํ ํ์๊ฐ ์๊ตฌ ๋๋ค.
- ํด๋ผ์ด์ธํธ์ ๋ถํ๊ฐ ํ์ ํ ์ค์ด๋ ๋ค.
- WebRTC์ ์ต๋ ์ฅ์ ์ธ ์ค์๊ฐ์ฑ์ด ์ ํด๋๊ณ , video, audio๋ฅผ ๊ฒฐํฉํ๋ ๊ณผ์ ์์ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค.
์ด๋ ๊ฒ ๊น์ง๋ง ๋ดค์ ๋ SFU ๋ฐฉ์์ด ์ ๋นํ ๋ฏ
์ผ๋จ ์ฐ๋ฆฌ์๊ฒ๋ ๋์ ์ปดํจํ ํ์์ ์๋ฒ๊ฐ ์์ผ๋ฉฐ, ์ค์๊ฐ์ฑ์ ์ ํดํ๋ ๊ฒ๋ณด๋ค๋ ํด๋ผ์ด์ธํธ์ ๋ถํ๊ฐ ๋์๊ฒ ๊ฐ๋ค….
chatGPT ๋ฌธ์ ๊ฒฐ๊ณผ
๋ค์ํ ์ฌ์ฉ์ ์์ ๋ฐ๋ฅธ ๋น๊ต
1:10 (์๊ท๋ชจ ๊ทธ๋ฃน ์ฑํ )
- SFU:
- ์๋ฒ ๋ถํ: ๋ฎ์.
- ํด๋ผ์ด์ธํธ ๋ถํ: ํด๋ผ์ด์ธํธ๊ฐ ์ต๋ 10๊ฐ์ ์คํธ๋ฆผ(์ค๋์ค+๋น๋์ค)์ ์ฒ๋ฆฌํด์ผ ํจ.
- ์ง์ฐ: ์๋ฒ ์ง์ฐ์ด ๋ฎ์ ์ค์๊ฐ์ฑ ์ฐ์.
- MCU:
- ์๋ฒ ๋ถํ: ๋ฏน์ฑ ์์ ์ผ๋ก ๋ถํ ์ฆ๊ฐ.
- ํด๋ผ์ด์ธํธ ๋ถํ: ๋จ์ผ ์คํธ๋ฆผ ์ฒ๋ฆฌ๋ก ๋งค์ฐ ๋ฎ์.
- ์ง์ฐ: ๋ฏน์ฑ์ผ๋ก ์ธํด 100~300ms์ ์ถ๊ฐ ์ง์ฐ ๋ฐ์.
1:100 (์ค๊ท๋ชจ ํ์ ๋๋ ๋๊ท๋ชจ ๊ทธ๋ฃน ์ฑํ )
- SFU:
- ์๋ฒ ๋ถํ: ์ฌ์ ํ ๋ฎ์ (๋จ์ ์ ๋ฌ ์์ ).
- ํด๋ผ์ด์ธํธ ๋ถํ: ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ต๋ 100๊ฐ์ ์คํธ๋ฆผ์ ์์ ํด์ผ ํ๋ฏ๋ก ๋งค์ฐ ๋์. ๋ฎ์ ์คํ์ ํด๋ผ์ด์ธํธ์์๋ ์ฒ๋ฆฌ ๋ถ๊ฐ.
- ์ง์ฐ: ํด๋ผ์ด์ธํธ CPU ๋ฐ ๋คํธ์ํฌ ๋ณ๋ชฉ์ผ๋ก ์ธํด ์ค์๊ฐ์ฑ ์ ํ.
- MCU:
- ์๋ฒ ๋ถํ: ๋ฏน์ฑ ์์ ์ด ๋งค์ฐ ์ปค์ง (CPU/GPU ์์ ์๋น ์ฆ๊ฐ).
- ํด๋ผ์ด์ธํธ ๋ถํ: ์ฌ์ ํ ๋ฎ์ (๋จ์ผ ์คํธ๋ฆผ).
- ์ง์ฐ: ๋ฏน์ฑ์ 300~500ms ์ถ๊ฐ ์ง์ฐ ๋ฐ์. ์ค์๊ฐ์ฑ ์ ํ ๊ฐ๋ฅ์ฑ ์์.
10:10 (๋ค์ค ์๊ท๋ชจ ๊ทธ๋ฃน ์ฑํ )
- SFU:
- ์๋ฒ ๋ถํ: ๋ฎ์ (10๊ฐ์ ๋ณ๋ ์ฑ๋ ๊ด๋ฆฌ).
- ํด๋ผ์ด์ธํธ ๋ถํ: ๊ฐ ํด๋ผ์ด์ธํธ๋ ์ต๋ 10๊ฐ์ ์คํธ๋ฆผ์ ์์ ํด์ผ ํ๋ฏ๋ก ์ ๋นํ ์์ค์ ์์ ํ์.
- ์ง์ฐ: ์๋ฒ ์ง์ฐ์ด ๋ฎ์ ์ค์๊ฐ์ฑ ์ฐ์.
- MCU:
- ์๋ฒ ๋ถํ: ๋ฏน์ฑ ์์ ์ฆ๊ฐ (10๊ฐ์ ๋ฏน์ฑ ์คํธ๋ฆผ ์์ฑ).
- ํด๋ผ์ด์ธํธ ๋ถํ: ๋จ์ผ ์คํธ๋ฆผ์ผ๋ก ๋ฎ์.
- ์ง์ฐ: ๋ฏน์ฑ์ผ๋ก ์ธํด 200~400ms ์ถ๊ฐ ์ง์ฐ ๋ฐ์.
๊ฒฐ๋ก : ์ฌ์ฉ์ ์์ ๋ฐ๋ฅธ ์ ํ
- 1:10 ์๊ท๋ชจ ์ฑํ
:
- SFU๊ฐ ์ ํฉ. ์๋ฒ ๋ถํ๊ฐ ์ ๊ณ ์ค์๊ฐ์ฑ์ด ๋ฐ์ด๋จ.
- 1:100 ๋๊ท๋ชจ ์ฑํ
:
- MCU๊ฐ ์ ํฉ. ํด๋ผ์ด์ธํธ ๋ถํ๋ฅผ ์ต์ํํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅ.
- 10:10 ๋ค์ค ์๊ท๋ชจ ์ฑํ
:
- ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฆ.
- ํด๋ผ์ด์ธํธ์ ์ฑ๋ฅ์ด ์ข๋ค๋ฉด SFU.
- ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฆ.
์ ์ฌ์ ๋๋ฐ์ด์ค๋ฅผ ๊ณ ๋ คํ๋ค๋ฉด MCU.
๋์ค์ฝ๋์์๋?
๋์ค์ฝ๋๋ ์ฃผ๋ก SFU ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ๋ค๋ง, ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํด ๋ค์์ ์ ์ฉํ๋ค.
- ์ ์ฌ์ ๋๋ฐ์ด์ค๋ ๋คํธ์ํฌ ํ์ง์ด ๋ฎ์ ํ๊ฒฝ์์๋ SFU + ๋ค์ด์ํ๋ง(ํ์ง/์์ง ์กฐ์ ).
- ๋๊ท๋ชจ ์ฌ์ฉ์ ํ์์์๋ MCU์ ์ ์ฌํ ์ค์ ์ง์คํ ์ ๋ต์ผ๋ก ์คํธ๋ฆผ์ ์ต์ ํ.
๊ตฌ์ฑ
- ํด๋ผ์ด์ธํธ
- Signaling Server
- STUN Serer
- TURN Server
- MediaServer
WebRTC vs WebSocket
WebSocket
- ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ์ ์น์์ผ JS ํด๋ฆฌํ์ ์ฌ์ฉํ๋ ๋ ๊ฑฐ์ ๋ธ๋ผ์ฐ์ ์์๋ ์ง์๋๋ IETF ํ์ค ๋ง๋ จ
- HTTP ํธํ ํธ๋์์ดํฌ์ ๊ธฐ๋ณธ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๊ธฐ์กด ๋ฐฉํ๋ฒฝ, ํ๋ก์ ๋ฐ ์น ์๋ฒ ์ธํ๋ผ์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ํจ์ฌ ์ฌ์
- ํจ์ฌ ๋ ๊ฐ๋จํ ๋ธ๋ผ์ฐ์ API
- ํด๋ผ์ด์ธํธ/๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก๋ง ์ฐ๊ฒฐ
- TCP ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์๊ธฐ ๋๋ฌธ์ ์ ๋ขฐํ ์ ์๋ ์์ฐจ์ ์ ์ก๋ง ์ง์
WebRTC
- WebRTC์ ์๊ทธ๋๋ง ์๋ฒ๊ฐ ์ฌ์ฉ๋๊ณ , ์๊ทธ๋๋ง ์๋ฒ์ ์น์์ผ์ ์ฌ์ฉํ ์ ์์
- ์น์์ผ์ ๋นํด ๋ณต์ก
- ์ฐ๊ฒฐ ์คํจ ๊ฐ๋ฅ์ฑ
- CPU, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ๋ง์์ง ์ ์์
์์ | WebRTC | WebSocket |
CPU ์ฌ์ฉ๋ | ์ค๊ฐ(์ํธํธ ๋ฐ P2P ์ฐ๊ฒฐ ๊ด๋ฆฌ) | ๋ฎ์(๋จ์ ํ ์คํธ ์ฒ๋ฆฌ) |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | ์ค๊ฐ(P2P ์ฐ๊ฒฐ ๋ฐ ICE ์ ๋ณด ์ ์ง) | ๋ฎ์(๋จ์ ์ฐ๊ฒฐ๊ด๋ฆฌ) |
์ง์ฐ ์๊ฐ | ๋ฎ์(P2P ์ฐ๊ฒฐ) | ๋ฎ์(์๋ฒ๋ฅผ ๊ฒฝ์ ) |
๊ตฌํ ๋ณต์ก๋ | ๋์(STUN/TURN ๋ฑ ์ค์ ํ์) | ๋ฎ์(๊ธฐ๋ณธ HTTP ์๋ฒ๋ก ๊ตฌํ ๊ฐ๋ฅ) |
์ฐธ๊ณ ์๋ฃ
https://inpa.tistory.com/entry/WEB-๐-์น-์์ผ-Socket-์ญ์ฌ๋ถํฐ-์ ๋ฆฌ
[WEB] ๐ ์น ์์ผ (Socket) ์ ๋ฆฌ (์ญ์ฌ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ)
โ์น ๊ฐ๋ฐ์ ์ฒ์ ๋ฐฐ์ฐ๊ธฐ ์์ํ๋ค๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ํต์ ์ ๋ชจ๋ HTTP ํ๋กํ ์ฝ๋ง ์ด์ฉํด์ ์ด๋ฃจ์ด์ง๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ์น ๊ฐ๋ฐ์ ํ๋ฉด์ ์ฑํ , ๊ฒ์, ์ฃผ์ ์ฐจํธ ๋ฑ์ ์ค์
inpa.tistory.com
https://jaehyeon48.github.io/network/websocket-protocol/
์น ์์ผ ํ๋กํ ์ฝ
๋ฑ์ฅ ๋ฐฐ๊ฒฝ ์น ์์ผ์ด ๋ฑ์ฅํ๊ธฐ ์ ์ ์ค์๊ฐ ํต์ ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐฉ์์๋ ํด๋ง, ๋กฑํด๋ง, HTTP ์คํธ๋ฆฌ๋ฐ ๊ธฐ๋ฒ ๋ฑ์ด ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ธฐ๋ฒ๋ค์ ๊ทผ๋ณธ์ ์ผ๋ก HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉ
jaehyeon48.github.io
https://wormwlrm.github.io/2021/01/24/Introducing-WebRTC.html
WebRTC๋ ์ด๋ป๊ฒ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์์๊น? - ์ฌ๊ทธ์ง๊ทธ์ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ
WebRTC ์ฐ๊ฒฐ ์ ์ฐจ์ ๋ํด ์์๋ณด๊ณ , ์ด ๊ณผ์ ์์ ์ ํ ์ ์๋ ๋ฏ์ ์ฉ์ด๋ค์ ๋ํด ์ ๋ฆฌํด๋ด ๋๋ค.
wormwlrm.github.io
https://velog.io/@jasondal91/๋ด๊ฐ-์ดํดํ-WebRTC
๋ด๊ฐ ์ดํดํ WebRTC
ํ๋ก์ ํธ์ WebRTC ๊ธฐ์ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ WebRTC์ ๋ํด ์ฐพ์๋ดค๋ค. ์ฒ์๋ณด๋ ์ฉ์ด๋ค์ด ๋ง์ด ๋์์ ๊ฐ๋ ์ ์ดํดํ๋๋ฐ ์กฐ๊ธ ์๊ฐ์ด ๊ฑธ๋ ธ๋ค. ์๋ ๋ด์ฉ๋ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๋ ๊ฒ์ด์ฌ์ ๊น์ด ๋ค์ด๊ฐ
velog.io
WebRTC vs WebSocket: If WebRTC can do Video, Audio, and Data, why do I need WebSocket?
So I'm looking to build a chat app that will allow video, audio, and text. I spent some time researching into WebSocket and WebRTC to decide which to use. Since there are plenty of video and audio ...
stackoverflow.com
https://millo-l.github.io/WebRTC-๊ตฌํ-๋ฐฉ์-Mesh-SFU-MCU/
WebRTC ๊ตฌํ ๋ฐฉ์(Mesh/P2P, SFU, MCU) | millo's tech blog
WebRTC๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์๋ฒ์ ์ข ๋ฅ์ ๋ํด ์์๋ณด์. (Mesh/P2P, SFU, MCU)
millo-l.github.io