Examples menu

๐Ÿ›ฐ NATS Visualizer

Four simulated microservices publish events over NATS. Watch Core pub/sub, JetStream persistence, and KV health heartbeats update in real time.

OpenSwoole-native NATS client โ€” a thin coroutine-native TCP client replaces third-party NATS libraries that require incompatible event loops. The read loop runs in a dedicated coroutine and yields cooperatively on every recv().
Core pub/sub (best-effort) โ€” Auth and Inventory subscribe via wildcard Core pub/sub (via.events.*). Fire-and-forget: if you kill one of these services its simulator stops and any events published while it is offline are gone forever.
Guaranteed delivery (JetStream durable consumers) โ€” Orders and Payments subscribe via named durable push consumers with explicit ACK. Kill = pause the consumer: the simulator keeps publishing, JetStream buffers un-ACKed messages. Revive = re-subscribe: the burst of missed events arrives immediately.
JetStream persistence โ€” the VIAEVENTS stream captures every message in memory. The durable consumer tracks its last-delivered sequence across subscribe/unsubscribe cycles โ€” a revived subscriber never misses a message.
KV health heartbeats โ€” each service publishes a heartbeat to $KV.viahealth.{service} every 2 s. Guaranteed services always heartbeat (only the consumer is paused); best-effort services stop heartbeating when killed. The health grid reads KV age.
Lazy init โ€” the NATS connection is established on the first page load inside the HTTP coroutine, where coroutine APIs are always safe. A double-init guard (flag set before Coroutine::create()) prevents race conditions.
NATS Connected 106637 events logged
Services
๐Ÿ“ฆ
Orders ๐Ÿ”’
order.shipped
26379 events
๐Ÿ’ณ
Payments ๐Ÿ”’
payment.refunded
26865 events
๐Ÿ”
Auth ๐Ÿ“ก
login.success
26702 events
๐Ÿ“Š
Inventory ๐Ÿ“ก
stock.depleted
26691 events
NATS
Core via.events.* auth, inventory
JetStream VIAEVENTS 106637 msgs
Durable ui-orders, ui-payments ACK guaranteed
KV viahealth heartbeats
Audit via.events.* 106636 โœ“
Health (KV age)
๐Ÿ“ฆ Orders 0.9s
๐Ÿ“ฆ DOWN
๐Ÿ’ณ Payments 0.9s
๐Ÿ’ณ DOWN
๐Ÿ” Auth 0.9s
๐Ÿ” DOWN
๐Ÿ“Š Inventory 0.9s
๐Ÿ“Š DOWN
Event Stream
๐Ÿ“Š stock.depleted SKU-83CE ร—57 01:17:25.786
๐Ÿ’ณ payment.refunded $130 USD 01:17:23.538
๐Ÿ“ฆ order.shipped $87 01:17:22.462
๐Ÿ“ฆ order.shipped $131 01:17:20.327
๐Ÿ“Š stock.reserved SKU-8417 ร—84 01:17:18.636
๐Ÿ” login.success user62 01:17:16.230
๐Ÿ“ฆ order.shipped $344 01:17:13.925
๐Ÿ“Š stock.reserved SKU-3A22 ร—62 01:17:12.804
๐Ÿ’ณ payment.refunded $298 USD 01:17:11.679
๐Ÿ” token.refresh user79 01:17:09.876
๐Ÿ’ณ payment.refunded $356 USD 01:17:07.555
๐Ÿ’ณ payment.refunded $468 USD 01:17:05.338
๐Ÿ“ฆ order.cancelled $464 01:17:03.554
๐Ÿ“Š stock.depleted SKU-3EA4 ร—18 01:17:02.043
๐Ÿ” login.failure user86 01:17:00.817
๐Ÿ’ณ payment.failed $352 USD 01:16:58.352
๐Ÿ’ณ payment.refunded $126 USD 01:16:55.903
๐Ÿ’ณ payment.failed $266 USD 01:16:54.679
๐Ÿ” login.success user44 01:16:52.576
๐Ÿ“ฆ order.placed $175 01:16:51.098
๐Ÿ“ฆ order.shipped $451 01:16:48.939
๐Ÿ“ฆ order.placed $225 01:16:46.591
๐Ÿ“ฆ order.shipped $281 01:16:44.895
๐Ÿ“Š stock.restocked SKU-BF74 ร—3 01:16:43.665
๐Ÿ“Š stock.depleted SKU-AC69 ร—90 01:16:41.884
๐Ÿ“Š stock.depleted SKU-A4CA ร—100 01:16:39.741
๐Ÿ’ณ payment.authorized $365 USD 01:16:37.617
๐Ÿ’ณ payment.failed $61 USD 01:16:35.960
๐Ÿ’ณ payment.refunded $104 USD 01:16:34.227
๐Ÿ’ณ payment.refunded $478 USD 01:16:31.855

๐ŸŽฏ Actions

kill-orders / kill-payments

Pauses the JetStream durable consumer (unsubscribes from the deliver inbox). Simulator keeps publishing; NATS buffers un-ACKed messages. Health tile stays green โ€” the service is still alive, only the consumer is paused.

kill-auth / kill-inventory

Stops the event simulator entirely. Events are silently dropped โ€” Core pub/sub has no persistence. Health tile flips to DOWN after 8 s of silence.

revive-{service} (ร—4)

Guaranteed services: re-subscribes to the deliver inbox; JetStream immediately delivers all buffered events in a burst. Best-effort: restarts the simulator and publishes a fresh KV heartbeat.

๐Ÿ‘ Views

mission_control.html.twig

Flow diagram piping services โ†’ NATS โ†’ browser, service kill/revive cards with delivery-type badges, NATS topology with health tiles, and a live event stream.