every.channel/evolution/proposals/ECP-0076-webtransport-only-web-watcher.md
2026-02-24 23:05:35 -08:00

23 lines
1.1 KiB
Markdown

# ECP-0076: WebTransport-Only Browser Watcher Path
## Context
The browser watcher (`@moq/watch`) races WebTransport against WebSocket fallback by default. In production relay sessions this fallback path correlates with degraded playback behavior (frequent stream resets and unreliable audio despite active subscription).
## Decision
In `apps/web/app.js`, configure each `<moq-watch>` instance to disable WebSocket fallback before connect:
- `watch.connection.websocket = { enabled: false }`
Also set default watcher volume to full (`volume="1"`) and mount live playback on a `<video>` element (with controls) inside `<moq-watch>` so browser audio policies and controls apply predictably. On mount, force audio signals to `muted=false` and `volume=1`.
## Rationale
- Aligns browser transport with the intended relay mode (WebTransport MoQ).
- Removes fallback-induced variability from live playback behavior.
- Keeps implementation local to web app wiring without forking upstream packages.
## Reversibility
- Remove the connection override to restore default fallback behavior.