Ir al contenido

Transportes

Para la explicación conceptual de cuándo se usa cada transporte, ver la guía Transportes. Esta página documenta su forma exacta.

interface ITransport {
send(msg: TabusMessage): void;
onMessage(listener: (msg: TabusMessage) => void): void;
destroy(): void;
}
Miembro Descripción
send(msg) Envía un TabusMessage a través del transporte.
onMessage(listener) Registra un listener que se invoca con cada TabusMessage recibido.
destroy() Libera los recursos del transporte (cierra el canal subyacente).

Envoltorio delgado sobre la API nativa BroadcastChannel.

Método Implementación
send(msg) bc.postMessage(msg)
onMessage(listener) bc.addEventListener("message", ...)
destroy() bc.close()

Es el transporte usado por defecto en cualquier navegador con soporte de BroadcastChannel, y comunica pestañas, ventanas y workers reales del mismo origen.

Fallback en memoria, activo cuando BroadcastChannel no existe (Node, SSR, navegadores muy antiguos).

  • Mantiene un registro a nivel de módulo: Map<string, Set<listener>>, compartido por todas las instancias de MemoryTransport dentro del mismo proceso.
  • Solo funciona dentro del mismo proceso/pestaña — no cruza pestañas reales, porque sin BroadcastChannel no existe tal concepto.
  • A diferencia de BroadcastTransport, el propio listener del emisor sí es invocado por send(); es Tabus quien filtra por tabId.
  • Emite un console.warn una sola vez por nombre de canal, avisando que se activó el fallback.
function __resetMemoryBus(): void

Limpia el registro interno a nivel de módulo de MemoryTransport (los listeners y el registro de canales ya avisados).

Exports resume qué de todo esto se exporta públicamente desde tabus-js.