/** * Build the cross-process realtime bus from config. When realtime scaling is * enabled, room broadcasts are bridged over Redis pub/sub so they reach clients * on every app process/instance (multiple runs, or multiple apps behind the * gateway). Returns undefined when scaling is off (single-process realtime). */ import type { RealtimeBus } from "@wrnexus/core"; import { createPubSub } from "@wrnexus/pubsub"; import { redisDriver } from "@wrnexus/pubsub/redis"; export function realtimeBusFromConfig(cfg?: { scale?: boolean; redisUrl?: string; }): RealtimeBus | undefined { if (!cfg?.scale && !cfg?.redisUrl) return undefined; return createPubSub(redisDriver(cfg.redisUrl)); }