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 253189 events logged
Services
๐Ÿ“ฆ
Orders ๐Ÿ”’
order.shipped
77522 events
๐Ÿ’ณ
Payments ๐Ÿ”’
payment.refunded
78079 events
๐Ÿ”
Auth ๐Ÿ“ก
login.failure
20183 events
๐Ÿ“Š
Inventory ๐Ÿ“ก
stock.reserved
77405 events
NATS
Core via.events.* auth, inventory
JetStream VIAEVENTS 253189 msgs
Durable ui-orders, ui-payments ACK guaranteed
KV viahealth heartbeats
Audit via.events.* 253188 โœ“
Health (KV age)
๐Ÿ“ฆ Orders 0.3s
๐Ÿ“ฆ DOWN
๐Ÿ’ณ Payments 0.3s
๐Ÿ’ณ DOWN
๐Ÿ” Auth 286666.3s
๐Ÿ” DOWN
๐Ÿ“Š Inventory 0.3s
๐Ÿ“Š DOWN
Event Stream
๐Ÿ’ณ payment.refunded $351 USD 16:40:57.339
๐Ÿ’ณ payment.failed $322 USD 16:40:55.683
๐Ÿ’ณ payment.authorized $15 USD 16:40:53.201
๐Ÿ“ฆ order.shipped $266 16:40:52.070
๐Ÿ“Š stock.reserved SKU-0604 ร—51 16:40:49.834
๐Ÿ“Š stock.reserved SKU-0760 ร—34 16:40:48.386
๐Ÿ“ฆ order.placed $68 16:40:47.515
๐Ÿ“Š stock.depleted SKU-D792 ร—7 16:40:46.490
๐Ÿ“ฆ order.placed $45 16:40:44.541
๐Ÿ“ฆ order.cancelled $253 16:40:42.186
๐Ÿ“ฆ order.shipped $306 16:40:41.196
๐Ÿ’ณ payment.failed $98 USD 16:40:38.804
๐Ÿ“Š stock.restocked SKU-B695 ร—6 16:40:36.441
๐Ÿ’ณ payment.failed $345 USD 16:40:35.328
๐Ÿ“Š stock.depleted SKU-2878 ร—67 16:40:33.202
๐Ÿ’ณ payment.refunded $419 USD 16:40:31.980
๐Ÿ“ฆ order.shipped $271 16:40:29.685
๐Ÿ“ฆ order.placed $217 16:40:27.303
๐Ÿ“ฆ order.shipped $227 16:40:26.355
๐Ÿ“ฆ order.cancelled $296 16:40:24.741
๐Ÿ’ณ payment.authorized $297 USD 16:40:22.479
๐Ÿ’ณ payment.authorized $163 USD 16:40:20.063
๐Ÿ“Š stock.restocked SKU-C02D ร—45 16:40:18.922
๐Ÿ“ฆ order.cancelled $463 16:40:17.583
๐Ÿ“ฆ order.cancelled $243 16:40:16.308
๐Ÿ“Š stock.depleted SKU-DD79 ร—52 16:40:14.158
๐Ÿ“Š stock.reserved SKU-44AB ร—46 16:40:12.502
๐Ÿ“ฆ order.placed $495 16:40:11.473
๐Ÿ’ณ payment.failed $72 USD 16:40:09.798
๐Ÿ“Š stock.depleted SKU-2C82 ร—4 16:40:07.743

๐ŸŽฏ 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.