A tiny WebSocket signaling relay + browser WebRTC peer for testing the watch's dialer end-to-end.
cd tools/dialer-browser
npm install
npm startVisit http://<this-machine-ip>:8788/ from any browser on the same network.
The watch's apps/dialer/ app is hardcoded to dial
ws://signaling.local:8788/. Either:
- Edit
shared/Dialer/index.tsxand changeSIGNALING_URLto your dev machine's IP, OR - Add a
signaling.localentry to your home router's local DNS, OR - Run a small mDNS responder that exposes
signaling.localon your dev machine.
- Browser tab loads
index.html→ joins room42. - Watch tap on "Call" with the number
42→ connects to the same room, creates an offer, sends it through the relay. - Browser receives offer → generates answer → sends it back.
- Both sides exchange ICE candidates → connection established → audio flows.
- "connecting…" stays forever: signaling reached but no audio path. Likely
TURN needed (
failed (try TURN)will appear). For most LAN setups this won't happen. - No remote audio in the browser: the watch's
esp_peer_send_audioisn't pushing frames — check the watch logs for thegea_rtc_sendtask starting. - No remote audio on the watch: the browser's
addTrackis sending but the watch'son_audio_datacallback isn't firing. Check codec negotiation in the offer/answer SDP — both sides need to agree on Opus 16 kHz mono. - Echo in the browser: expected. The watch has no AEC enabled in
Phase 5.0; see the
aec:commits for context.
