Appearance
Real-time streaming
Sulu pushes updates to the UI over WebSocket. No polling.
What you'll see
- The Launches list shows new launches and updates per-card progress as results stream in.
- The Launch detail page header shows a LIVE pill while the run is in progress and the WebSocket subscription is active.
- The Tree tab updates per-result rows as their statuses change.
Connection model
The frontend uses STOMP over SockJS. The connection auto-reconnects with a capped backoff and keeps retrying — a server restart or network blip never permanently freezes a tab. On reconnect the open Launches list, launch detail, and log panels refetch, so events missed during the outage are caught up automatically. While the connection is down, the Launches list shows a Live updates unavailable hint and the LIVE pill disappears.
Topics
The frontend subscribes to launch-level topics owned by the backend. You don't need to care about topic names directly — they're fully managed by SuluWebSocket in the frontend client.
What it isn't
- Sulu's WebSocket stream is not for arbitrary client-server messaging; it's a one-way fan-out for launch events.
- It is not authoritative — the REST API is. WebSocket events are notifications. The page state is reconciled with
GETrequests on initial mount.