diff --git a/evolution/proposals/ECP-0063-cloudflare-moq-webtransport.md b/evolution/proposals/ECP-0063-cloudflare-moq-webtransport.md index 6904c4f..443db33 100644 --- a/evolution/proposals/ECP-0063-cloudflare-moq-webtransport.md +++ b/evolution/proposals/ECP-0063-cloudflare-moq-webtransport.md @@ -59,6 +59,7 @@ newer draft implementations. Implementation choice: - Cloudflare's relay preview currently does **not** support `ANNOUNCE` (namespace-style publishing). `ec-node wt-publish` uses the `moq-lite` publish model via `moq-native` and `moq-mux` (fMP4 ingestion) for Cloudflare relay compatibility. +- On NixOS deployments, we disable `moq-native`'s WebSocket fallback (`MOQ_CLIENT_WEBSOCKET_ENABLED=false`) to ensure WebTransport (QUIC) is used. This avoids the WebSocket path occasionally "winning" the race and then failing MoQ negotiation against the Cloudflare relay, causing rapid reconnect loops. ### Share link diff --git a/nix/modules/ec-node.nix b/nix/modules/ec-node.nix index a6e57a6..0e8487a 100644 --- a/nix/modules/ec-node.nix +++ b/nix/modules/ec-node.nix @@ -80,6 +80,9 @@ in type = lib.types.attrsOf lib.types.str; default = { RUST_LOG = "info"; + # Cloudflare's relay is WebTransport-first; moq-native's WebSocket fallback can "win" + # the race and then fail MoQ negotiation, causing a tight reconnect loop. + MOQ_CLIENT_WEBSOCKET_ENABLED = "false"; }; description = "Environment variables for the publisher services."; };