Cross-device screen sharing via WebRTC + Socket.io. One computer hosts, another views — live video stream peer-to-peer, no plugins needed.
- Host opens the app → clicks Share Screen → gets a 6-digit code (refreshes every 5 min)
- Viewer opens the same URL on any other device → switches to Viewer → enters the code
- WebRTC establishes a direct peer-to-peer video stream
- Viewer can send URLs for the host to open in new tabs
- Push this repo to GitHub
- Go to render.com → New → Blueprint
- Connect your repo — Render reads
render.yamlautomatically - Deploy. Done.
- Go to render.com → New → Web Service
- Connect your GitHub repo
- Settings:
- Runtime: Node
- Build Command:
npm install - Start Command:
npm start - Plan: Free
- Deploy
Your app will be live at https://screenlink-xxxx.onrender.com (or your custom domain).
Both computers visit that URL. Host shares screen, viewer enters code.
npm install
npm start
# Open http://localhost:3000- Server: Node.js + Express + Socket.io (signaling only)
- Video: WebRTC
getDisplayMedia→ peer-to-peer stream - No database — sessions are in-memory, reset on redeploy
- STUN: Google public STUN servers (free, no config needed)
- Screen sharing requires HTTPS in production — Render provides this automatically
- For localhost testing, Chrome allows
getDisplayMediaonhttp://localhost - The free Render tier sleeps after 15 min of inactivity (first load may be slow)
- For always-on use, upgrade to Render's paid tier or add a cron ping