Ctrl K
ComunidadGuías…

src/server/session-bus.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
/**
 * Tiny indirection so server modules (e.g. an add-on's background duplex engine) can push WS events to a session
 * OUTSIDE a request turn — without importing index.ts (which would be a cycle). index.ts registers the
 * real `broadcast` at boot via setBroadcaster(); callers use emitToSession().
 */
type Broadcaster = (data: object) => void;

let _broadcast: Broadcaster | null = null;

export function setBroadcaster(fn: Broadcaster): void {
  _broadcast = fn;
}

/** Push an event to all clients (carrying sessionId); no-op if the bus isn't wired yet. */
export function emitToSession(sessionId: string, data: object): void {
  if (!_broadcast) return;
  _broadcast({ ...data, sessionId });
}