BroadcastChannel: mensajería del mismo origen y privacidad
Coordina contextos del navegador del mismo origen con BroadcastChannel y conserva límites de ciclo de vida, respaldo y privacidad.
BotBrowser Team
Quieres la documentación estructurada de Plataforma?
Este artículo forma parte de la biblioteca editorial. Para pasos de configuración, material de referencia y actualizaciones continuas, entra en la sección de docs.
BroadcastChannel sirve para que pestañas, ventanas, workers o marcos del mismo origen intercambien una notificación breve. No es un bus general, una señal de autenticación ni una prueba de que dos contextos pertenecen a una persona. La entrega depende del modelo de origen del navegador y un mensaje ausente o tardío tiene muchas causas normales. BotBrowser puede repetir una fixture autorizada del mismo origen y registrar entregas y cierres visibles, pero no puede enviar entre orígenes, relajar la política de mismo origen ni garantizar tiempos entre versiones.
TL;DR
- Usa BroadcastChannel para coordinar contextos del mismo origen.
- Cierra canales al terminar y trata recargas, suspensión y cierre como estados normales.
- Detecta la API y conserva un respaldo útil, como
storage, un worker o una actualización del servidor. - El alcance del mismo origen no prueba autenticación, identidad, ubicación ni confianza.
- BotBrowser repite fixtures autorizadas y compara resultados, pero no cruza orígenes ni garantiza tiempos.
Contenido
- Qué entrega BroadcastChannel
- Límites de origen y privacidad
- Ciclo de vida y respaldo
- Pruebas con BotBrowser
- Conclusión
Qué entrega BroadcastChannel
new BroadcastChannel(name) crea un canal para el origen y el grupo de contexto actuales. postMessage() usa structured clone para otros contextos elegibles con el mismo nombre. El emisor no recibe su propio mensaje. Un receptor puede manejar message y messageerror. No existe cola duradera ni recibo de entrega.
Usa nombres estables y datos de mensaje pequeños, por ejemplo {version: 3, type: 'cart-changed', key: 'cart'}. No pongas tokens, registros completos, texto privado ni secretos: cualquier script que ya tenga autoridad en el origen puede escuchar. El canal es una notificación para volver a leer el estado autoritativo, no una transacción.
La entrega es de mejor esfuerzo. Un contexto puede cerrarse, congelarse o cargarse después del envío. Un valor no clonable también puede fallar. Escribe primero el cambio autoritativo y luego notifica; si la escritura falla, no publiques éxito. Retira listeners y llama a close() al desmontar.
Límites de origen y privacidad
El navegador compara esquema, host y puerto. Dos subdominios o puertos distintos no comparten canal, aunque pertenezcan al mismo equipo. Un marco sandbox puede tener un origen opaco, y particiones de almacenamiento o ventanas privadas pueden cambiar la elegibilidad.
La entrega entre dos contextos no establece identidad. Dos ventanas pueden compartir origen por un perfil compartido, y una misma persona puede tener contextos que no comparten origen. Un mensaje ausente no prueba aislamiento fallido: revisa origen, nombre, momento de registro, ciclo de vida y clonabilidad. Consulta la sección de mensajería de WHATWG, la guía BroadcastChannel de MDN y la política de mismo origen.
Mantén nombres y datos de mensaje fuera de los registros de identidad, facturación y ubicación. Un evento draft-updated no dice quién escribió, dónde está ni qué dispositivo es autoritativo. Los principios de privacidad de W3C apoyan limitar la finalidad y minimizar datos.
Ciclo de vida y respaldo
Empieza con una base que funcione sin la API. Detecta BroadcastChannel, crea el canal solo cuando haga falta y conserva la página principal si falla. storage puede servir para pestañas, un worker compartido para ciertos clientes y una actualización del servidor para estado autoritativo; no finjas que tienen la misma semántica.
Al cambiar de ruta, cierra el canal viejo. Tras una recarga, vuelve a leer el estado antes de esperar avisos. Al volver de una pestaña oculta, refresca si el dato importa. Haz los handlers idempotentes, compara una revisión y conserva un retry visible. Agrupa ráfagas, limita la cola y evita bucles.
Prueba API ausente, nombre equivocado, origen equivocado, cierre antes de enviar, receptor tardío, error de clone, recarga, suspensión y terminación de worker. Verifica texto, foco, teclado y contenido base, no solo promesas.
Pruebas con BotBrowser
BotBrowser permite repetir una fixture autorizada de múltiples contextos del mismo origen, registrar entregas visibles y resultados de cierre o reapertura, y comparar versiones declaradas. No puede enviar entre orígenes, eludir la política de mismo origen, garantizar tiempos entre versiones ni tratar el alcance del canal como evidencia de identidad. Usa datos sintéticos y registra solo versión, origen de prueba, estado del listener, resultado visible y respaldo.
Conclusión
BroadcastChannel es una señal de coordinación para contextos del mismo origen. Conserva el estado autoritativo, cierra canales durante transiciones, haz handlers idempotentes y ofrece un respaldo de primera clase. BotBrowser hace repetible la comparación autorizada, mientras origen, autorización, ciclo de vida y privacidad siguen siendo responsabilidad de los sistemas que los controlan.
Lecturas relacionadas
- Investigación de privacidad del navegador con especificaciones públicas
- Soporte de funciones frente a calidad de funciones
- Fixtures de automatización y aislamiento
Fuentes
Artículos Relacionados
Lleva BotBrowser de la investigación a producción
Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.