BroadcastChannel es una API de JavaScript que permite la comunicación entre diferentes contextos de navegación (pestañas, ventanas, iframes) dentro del mismo navegador y dominio. Con ella, puedes enviar mensajes de manera simple y eficiente entre estas diferentes instancias, superando algunas de las limitaciones de localStorage.
El funcionamiento de BroadcastChannel es bastante sencillo. Creas un canal de comunicación con un identificador, y cualquier mensaje enviado a ese canal será recibido por todos los oyentes conectados a él.
const channel = new BroadcastChannel('mi_canal');
channel.postMessage('¡Hola, mundo!');
channel.onmessage = (event) => {
console.log('Mensaje recibido:', event.data);
};
Para cerrar el canal y liberar recursos, utiliza el método close()
:
channel.close();
Imagina que tienes una aplicación con temas claros y oscuros, y quieres sincronizar la elección del tema entre diferentes pestañas.
// Escuchar cambios de tema
channel.onmessage = (event) => {
if (event.data.type === 'CAMBIO_TEMA') {
document.body.className = event.data.theme;
}
};
// Cambiar tema y enviar mensaje
function changeTheme(theme) {
document.body.className = theme;
channel.postMessage({ type: 'CAMBIO_TEMA', theme });
}
// Ejemplo de cambio de tema
changeTheme('modo-oscuro');
Aunque BroadcastChannel es seguro para comunicaciones dentro del mismo dominio, evita enviar información sensible como contraseñas o tokens de autenticación sin medidas de seguridad adicionales.
BroadcastChannel es una herramienta poderosa para cualquier desarrollador web que necesite coordinar acciones entre diferentes partes de una aplicación. Su simplicidad y eficiencia la hacen ideal para sincronizar estados y eventos en múltiples contextos de navegación. Intenta integrarlo en tu próximo proyecto y ve cómo puede simplificar la comunicación entre pestañas del navegador.
Jorge García
Fullstack developer