A real-time multi-party video conferencing application built with Node.js, Mediasoup, and Vanilla JS.
- Multi-party Support: SFU architecture allows many participants in a single room.
- RTP Capabilities: Automatic negotiation of codecs (VP8/Opus).
- Simulcast: (Partial support in config) for adapting to bandwidth.
- Responsive UI: Clean grid layout for video tiles.
- Backend: Node.js + Express + Socket.IO + Mediasoup (C++ Worker).
- Frontend: Vanilla JS (bundled with Vite).
- Node.js v16+
- Python 3 (for compiling Mediasoup worker)
- gcc/g++ (build tools)
- Clone the repository
- Install Dependencies
npm install
- Generate SSL Certificates (Required for WebRTC)
Note: Defaults are configured in
mkdir certs openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout certs/key.pem -out certs/cert.pem
server/config.js
Run both server and client:
npm run dev- Frontend: https://localhost:5173
- Backend: https://localhost:3000
- Install Node.js, Python3, Build Essentials.
- Clone repo.
- Update
server/config.js:- Set
domainto your domain/IP. - Set
mediasoup.webRtcTransport.listenIps[0].announcedIpto your Public IP.
- Set
- Run
npm install. - Run
npm run server(or use PM2). - Build frontend:
npm run build-> Servedist/folder via Nginx or Express.
Open UDP ports defined in server/config.js (10000-10100).
See code comments in server/server.js and client/client.js for detailed flow.