joule-moq-relay: each end of a WebSocket session pings the other every 30 s #513
Merged
dcharlot
merged 1 commit from 2026-10-27 16:14:29 -04:00
wai/relay-ws-ping into main 2026-10-27
joule-moq-relay: each end of a WebSocket session pings the other every 30 s
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 13s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 9s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 7s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 5s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 4s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 5s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 3m32s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 3m35s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 1m2s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 2m58s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 6m31s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 40s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 8m46s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m47s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m47s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m30s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 12m15s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 10m49s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 1m15s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 14m35s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 8m32s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 17m57s
The edge relay's link to its upstream runs over wss through a tunnel that closes a connection it sees idle. With no one watching, the link carried nothing, and the tunnel cut it every two minutes; the edge redialled within two seconds each time. Each end now sends a WebSocket ping (RFC 6455 §5.5.2) every 30 s while the session lasts, and the peer's WebSocket answers with a pong. The binding's README gains the step. Co-Authored-By: Claude Opus 5.5 <[email protected]>