A simple WebRTC video meeting app with:
- Create / Join meeting by ID
- Waiting room (host admits participants)
- Multi-user video grid (camera/mic can be on/off)
- Text chat + system messages
- Node.js signaling server (Socket.IO)
- App (Frontend): YOUR_FRONTEND_URL_HERE
- Signaling Server (Render): https://webrtc-s0xb.onrender.com
Render free tier may sleep when inactive. First request can take a bit to wake up.
client/
index.html
app.js
style.css
server/
index.js
package.json
typings/
- Node.js (recommended: 18+)
- npm
cd server
npm installnpm startServer runs on (example): http://localhost:3000
(If your server uses a different port, check server/index.js.)
If your client is plain HTML/JS:
- Open
client/index.htmlin the browser OR use VS Code Live Server.
When deploying, the client must connect to the online server URL (not localhost).
In client/app.js, set your server URL like this:
const SERVER_URL = "https://webrtc-s0xb.onrender.com"; // Render server
const socket = io(SERVER_URL);If you're running locally, use:
const SERVER_URL = "http://localhost:3000";- Host creates a meeting → gets a Meeting ID
- Others join using Meeting ID
- Host admits users from waiting room
- Everyone can see each other (when admitted)
-
Create a Web Service on Render
-
Connect GitHub repo
-
Select branch:
main(recommended) -
Set:
- Root Directory:
server - Build Command:
npm install - Start Command:
npm start
- Root Directory:
-
Ensure your server listens on Render's port:
process.env.PORT || 3000
After deploy, Render provides a URL like:
https://webrtc-s0xb.onrender.com
Deploy the client/ folder using one of these:
- Netlify (easy drag & drop)
- Vercel
- GitHub Pages
After the frontend is deployed:
- Put your frontend URL into the Live Links section above
- Ensure
client/app.jsis using the Render server URL
We use:
main= stable/releasedevelop= active development (default)feature/*= new tasks
git checkout develop
git pull origin develop
git checkout -b feature/your-taskgit push -u origin feature/your-taskOpen PR: feature/your-task → develop
- Do not commit
node_modules(already ignored via.gitignore) - If media permissions fail, allow camera/microphone in browser settings.
- If the client cannot connect to the server after deployment, check CORS settings in
server/index.js.