WebRTC connections,
signaled by QR code
Two devices exchange a WebRTC offer and answer by scanning each other's QR codes, then talk over a direct data channel. It runs on the browser's native WebRTC with a Vue.js interface — there is no signaling server; public STUN servers are used to discover network addresses.
What it does
What the web app implements today, and where its limits are.
No signaling server
Encrypted in transit
Runs in the browser
Direct data channel
NAT traversal via STUN
Works offline on a local network
How it works
The QR codes replace the signaling server; everything else is standard WebRTC.
- 1
Host shows an offer
The host creates a WebRTC offer, gathers ICE candidates and shows the offer as a QR code.
- 2
Guest scans and answers
The guest scans the offer, creates an answer and shows it as a QR code.
- 3
Host scans the answer
The host applies the answer, ICE finds a path and the data channel opens. The app reports "connected" only when the channel is open.
Technical flow
- SDP offerRTCPeerConnection
- ICE candidatesup to 300 ms
- QR codeJSON payload
- SDP answerQR code back
- Data channelDTLS
Try it
Screens in this app that open a real connection between two devices.
Chat
File transfer
Demo
Not available yet
Connect two devices
Open the demo on two devices, or in two browser tabs, and follow the steps.