Stream live session-list updates to server browsers #26
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent: #1
Depends on: #8, #9, #15
Priority: nice-to-have; not a Rendezvous v1 release gate
Outcome
Let a player leave the server browser open and see sessions appear, change capacity/status, or disappear without manually refreshing or repeatedly replacing the entire list.
Recommended transport
Use Server-Sent Events (SSE) for the first implementation because browser updates are one-way. Keep the existing bounded HTTP snapshot/query API as the source of truth and polling fallback; do not require WebSockets unless a later bidirectional feature justifies them.
Scope
text/event-stream.session_upsert— add or replace the public projection of one listing;session_remove— remove a listing that expired, became stale/incompatible/full for the filter, was revoked, or changed visibility;reset— discard local state and fetch a fresh snapshot;Last-Event-IDreconnect.resetrather than silently serving an incomplete view.Acceptance criteria
Last-Event-IDresumes without duplicate or missing final state.Started on
codex/issue-26-sse-browser-updatesfrom the verified #23 checkpoint. I will preserve the bounded snapshot API as source of truth, add scoped/bounded SSE replay and reset semantics, expose typed SDK/TestClient behavior, and verify isolation, churn coalescing, slow-consumer bounds, cancellation/disposal, and polling fallback before reconciling the issue.Implemented and verified on
codex/issue-26-sse-browser-updates.Commit:
06c4ecf feat(browser): stream bounded live session updates (#26)Delivered:
session_upsert,session_remove,reset, andkeepaliveevents;watchdiagnostics plus deliberate--exercise-reconnectand--exercise-resetflows;Verification:
codex/issue-26-sse-browser-updatesto codex/issue-26-sse-browser-updates