https://github.com/leye195/webrtc_tutorial
๐ WebRTC Tutorial, WebRTC๋ฅผ ํ์ฉํด ๊ฐ๋จํ ํ์ํตํ๋ฅผ ๊ตฌํํด๋ณด์
https://github.com/leye195/webrtc_tutorial
express react webrtc
Last synced: 2 months ago
JSON representation
๐ WebRTC Tutorial, WebRTC๋ฅผ ํ์ฉํด ๊ฐ๋จํ ํ์ํตํ๋ฅผ ๊ตฌํํด๋ณด์
- Host: GitHub
- URL: https://github.com/leye195/webrtc_tutorial
- Owner: leye195
- Created: 2020-09-07T18:49:11.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-09-29T15:53:18.000Z (over 4 years ago)
- Last Synced: 2025-02-06T23:31:27.081Z (4 months ago)
- Topics: express, react, webrtc
- Language: TypeScript
- Homepage:
- Size: 95.7 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WAVA (WebRTC Studying)
- [x] React (TypeScript), styled-components
- [x] Socket.io
- [x] Express
- [x] WebRTC (Peer)
- [x] Node.js## ToDo
- [x] WebRTC๋ฅผ ํ์ฉํด ๊ฐ๋จํ ํ์ํตํ๋ฅผ ๊ตฌํ
- [x] ์๋ฒ ์ฐ๊ฒฐ jwtํ ํฐ ๋ฐฉ์ ๋ก๊ทธ์ธ ๊ตฌํ
- [x] ํตํ ์์ ์ฐ๊ฒฐ## WebRTC
### ํน์ง
- WebRTC๋ ์๋ฒ๋ฅผ ํตํ์ง ์๊ณ ์น ์ดํ๋ฆฌ์ผ์ด์ (์ต๊ทผ์๋ android ๋ฐ ios๋ ์ง์) ๋ฐ ์ฌ์ดํธ๋ค ์ฆ, ํด๋ผ์ด์ธํธ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณ๋์ ์ํํธ์จ์ด ์์ด ์์ฑ, ์์ ๋ฏธ๋์ด ํน์ ํ ์คํธ, ํ์ผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋ง๋ ๊ธฐ์ ์ด๋ค(Peer to Peer).
- ์ด๋ค ํ๋ฌ๊ทธ์ธ ์์ด ์์ฑ์ฑํ ์ ๋ฌผ๋ก ์ด๋ฉฐ ํ์์ฑํ , ๋ฐ์ดํฐ ๊ตํ๊น์ง๋ ๊ฐ๋ฅ, ํ์ง๋ง ์ผ๋ถ ๋ธ๋ผ์ฐ์ ์์๋ ์ง์ํ์ง ์์
- ์์ ์ฑ์ด ์ข์ TCP๊ฐ ์๋ ์๋๊ฐ ๋น ๋ฅธ UDP๋ฅผ ์ฌ์ฉ,
- ํ์ฌ ํ์ค ํ๋กํ ์ฝ์ด ์๋ค๊ณ ํ๋ค.### ์ฉ์ด ์ ๋ฆฌ
#### NAT
- ์ธ๋ถ๋ง๊ณผ ๋ถ๋ฆฌํ๊ณ ๊ณต์ธ๋ง๊ณผ ๋ด๋ถ๋ง์ IP:Port๋ฅผ ๋งคํํด์ฃผ๋ ๊ฒ
#### Stun Server, Turn Server
1. Stun(Session Traversal Utilities for NAT):
- ๋คํธ์ํฌ ํ๋กํ ์ฝ/ํจํท ํฌ๋งท์ผ๋ก, ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ํ Discovery? ๋ฅผ ์ํ ๊ฒ์ผ๋ก๋ฉ์ ์ ๋ค ๋ผ๋ฆฌ ํต์ ํ๊ธฐ ์ํด STUNํจํท์ ์ด์ฉํ๋ค. STUN์ IP ์ข ๋จ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด 2๊ฐ์ง๋ฅผ ์ผ์ ํด์ฃผ๋๋ฐ
- (1) ์ด๋ค ์ข ๋จ์ด NAT/๋ฐฉํ๋ฒฝ ๋ค์ ์๋์ง ํ๋จ
- (2) ์ด๋ค ์ข ๋จ์ ๋ํ ๊ณต์ธIP ์ฃผ์๋ฅผ ๊ฒฐ์ ํ๊ณ NAT/๋ฐฉํ๋ฒฝ์ ์ ํ์ ์๋ ค์ค๋ค.
- (2)๋ฒ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ P2P IP๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ STUN์ P2P IP์ฐ๊ฒฐ์ ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๊ธฐ๋ง ํ๋ค.
- ๋ง์ฝ ์ด๋ค ์ข ๋จ์ ํ๊ฒฝ์ด P2P IP ์ฐ๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ STUN์ด ์๋ TURN์ ํ์ฉํด์ผ ํ๋ค.
- public ๊ด์ ์์๋ ์ข ๋จ์ access ๊ฐ๋ฅํ ip:port๋ฅผ ๋ฐ๊ฒฌํ๋ ์์ ์2. TURN(Traversal Using Relays around NAT)
- Peer๊ฐ ์ง์ ํต์ ์ด ์คํจํ ๊ฒฝ์ฐ ์ข ๋จ์ ๋ค ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฆด๋ ์ด๋ฅผ ์ํํ๋
- TURN ์๋ฒ๋ค์ ์ฌ์ฉํ๋๋ฐ, TURN์ Peer๋ค๊ฐ์ ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ์ ๋ฆด๋ ์ด ํ๊ธฐ ์ํด ์ฌ์ฉ
- TURN์ ๊ณต์ฉ ์ฃผ์๋ค์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ฏธ๋์ด๋ฅผ ๋ฆด๋ ์ด ํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ์ ์ปดํจํ ์์ ์๋ชจ๋ ์ ์๋ค.#### SDP(Session Description Protocol)
- ์ฐ๊ฒฐํ๊ณ ์ ํ๋ Peer ์๋ก๊ฐ์ ๋ฏธ๋์ด์ ๋คํธ์ํฌ์ ๊ดํ ์ ๋ณด๋ฅผ ์๋ก ๊ตํํ๊ณ ์ดํดํ๊ธฐ ์ํด ์ฌ์ฉ๋จ
#### ICE (Interactive Connectivity Establishment)
ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ํต์ ๊ฐ๋ฅ ์ฃผ์๋ฅผ ์๋ณํด์ค๋ค.
์๋ณ์ ํ๊ธฐ ์ํค 3๊ฐ์ง๋ฅผ ํ์ฉํ๋ค- local Address: ํด๋ผ์ด์ธํธ์ ์ฌ์ค์ฃผ์(host candidate), ๋๊ณผ ๋ฌด์ ๋ ๋ฑ ๋ค์ ์ธํฐํ์ด์ค๊ฐ ์์ผ๋ฉด ๋ชจ๋ ์ฃผ์๊ฐ ํ๋ณด๊ฐ ๋จ
- server Reflexive Address: NAT ์ฅ๋น๊ฐ ๋งคํํ ํด๋ผ์ด์ธํธ ๊ณต์ธ๋ง ์ฃผ์๋ก STUN์ ์ํด ํ๋จ๋จ
- Relayed Address: TURN์๋ฒ๊ฐ ํจํท ๋ฆด๋ ์ด๋ฅผ ์ํด ํ ๋นํ๋ ์ฃผ์## [์ฐธ๊ณ ํ๊ธฐ]
- https://youtube.com/watch?v=DvlyzDZDEq4&t=426s
- https://peerjs.com/docs.html#peeron-close
- https://github.com/peers/peerjs-server
- https://github.com/jmcker/Peer-to-Peer-Cue-System
- https://velog.io/@ehdrms2034/WebRTC-%EC%9B%B9%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EB%A1%9C-%ED%99%94%EC%83%81-%EC%B1%84%ED%8C%85%EC%9D%84-%EB%A7%8C%EB%93%A4-%EC%88%98-%EC%9E%88%EB%8B%A4%EA%B3%A0
- https://alnova2.tistory.com/1110
- https://www.youtube.com/watch?v=2Z2PDsqgJP8