Skip to content

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 GET requests on initial mount.

Sulu Test Management System