This repository contains the source code for a 1:N streaming server built with WebRTC.
The server is designed to support real-time video streaming and chat functionality, using a peer-assisted CDN architecture to optimize network efficiency and reduce server load.
- 1:N Real-time Streaming : Supports one-to-many video streaming, enabling a single broadcaster to stream to multiple viewers simultaneously.
- Real-time Chat: Provides a chat feature integrated within the streaming session, allowing viewers to communicate in real-time.
- Peer-assisted CDN: Utilizes a Peer-assisted Content Delivery Network (CDN) to improve scalability and reduce bandwidth costs by allowing viewers to share video data among themselves.
- implement socketIO (m)
- refactor CMD logic (m)
- introduce grpc signal-admin (L)
- implement in-memory db (m)
- Channel-key Authentication (m)
- Validate channel-key and channel-id (m)
- set max-request-num in duration (m)
- Add prometheus component in pdn server (L)
- import prometheus (s)
- Add business metric (s)
- how much time consumed for some method or query (s)
- how many users are in channel (s)
- monitor server resource - cpu, memory.. (s)
- Set prometheus component in admin server (L)
- Add prometheus to docker-compose file (s)
- Set grafana json (m)
- Add Grafana to docker-compose file (s)
- Add Logging db like loki (L)
- channel and API key usage history (XL)
- test basic server -> peer1 -> peer2 (XL)
- Remove peer from channel (m)
- Peer health check (L)
- Super peer checking function (L)
- Superpeer Candidate Management (m)
- Fault Recovery and Reconnection (XXL) 6.1 handle super peer die (XL) 6.2 Peer rebalancing (XL)
- implement project and customer (L)
- Set channel name, user name (m)
- get userlist of a channel api (m)
- channel list api (m)
- evict user api (m)
- user rename api (s)
- select redis datastructure modeling (m)
- make docker setting of redis (s)
- Backup DB (L)
- regular data transfer from Redis to the backup db (L)
- Add linter (m)
- build pdn server docker image (s)
- add docker compose file (s)
- implement CI/CD pipeline (XL)
- CI
- Add Testing and linting in CI (s)
- CD
- dev server on homeserver (m)
- run on AWS (L)
- implement on k8s (XL)
- add unit test (XL) V
- add benchmark (L)
- massive user test (XXL)
- check how many users can run on one server (XXL)
- add k6 test (XL)
- check test coverage (m)
- Add design document of code architecture (s) V
- whole architecture (s)
- api document (m)
- Wrap JDK with an SDK (L)
- release npm (s)