- WebRTC
- 1:N communication (SFU server)
- React with Typescript
- Node.js as a MediaServer(SFU server)
- Docker
# server use 8080 port
# web use 8085 port
# You can connect to http://localhost:8085
cd Typescript-ReactJS-WebRTC-1-N-SFU
docker-compose up -d
You need to install Node.js
cd Typescript-ReactJS-WebRTC-1-N-SFU
cd server
npm install
node index.js
cd web
npm install
npm start
device | description |
---|---|
CPU | AMD Ryzen 5 3600 6-Core Processor 3.59GHz |
RAM | 32GB |
GPU | NVIDIA GeForce RTX 2060 SUPER |
OS | Windows 10 Pro |
- all clients and server were in same devices
- a video conference style
the number of users | P2P/Mesh(Signaling Server) | SFU(Media Server) |
---|---|---|
2 | 4% | 5% |
3 | 10% | 8% |
4 | 22% | 9.5% |
5 | 34% | 18% |
6 | 47% | 25% |
7 | 64% | 30% |
8 | 80% | 30% |
the number of users | P2P/Mesh(Signaling Server) | SFU(Media Server) |
---|---|---|
2 | 0.1% | 2% |
3 | 0.1% | 13% |
4 | 0.1% | 24% |
5 | 0.1% | 32% |
6 | 0.1% | 41% |
7 | 0.1% | 48% |
8 | 0.1% | 50% |
- The SFU server has lost its real-time performance since it had 6 clients.
- Some images were stopped when there were more than 7 clients.
- SFU Server had significantly higher CPU usage than Signaling Server.
- Client-side CPU usage decreased by approximately half when using SFU Server.
- There was a slight delay as the client increased, but the video did not stop.
- The CPU usage of the Signaling Server was kept at 0.1%.
- As the number of clients increased, the CPU usage of the client increased significantly.
- 1:1 (peer to peer) WebRTC https://github.com/Seung3837/Typescript-ReactJS-WebRTC-1-1-P2P
- 1:N (peer to peer) WebRTC https://github.com/Seung3837/Typescript-ReactJS-WebRTC-1-N-P2P