35 lines
1.4 KiB
Markdown
35 lines
1.4 KiB
Markdown
# ECP-0076: WebTransport-Only Browser Watcher Path
|
|
|
|
Status: Implemented
|
|
|
|
## 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"`). Keep canvas live rendering, and 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.
|
|
|
|
## Alternatives considered
|
|
|
|
- Leave WebSocket fallback enabled. Rejected because fallback races correlated with unstable live playback.
|
|
- Fork upstream watcher package for a custom transport stack. Rejected because app-level wiring changes were sufficient.
|
|
|
|
## Rollout / teardown
|
|
|
|
- Deploy connection override to disable websocket fallback and validate live session stability.
|
|
- Teardown by removing the override and restoring default transport behavior.
|
|
|
|
## Reversibility
|
|
|
|
- Remove the connection override to restore default fallback behavior.
|