Resumen

  • Una discusión pública del W3C de 2013 planteó difundir mensajes a varios contextos de un mismo origen. Un expediente de 2014 extendió la idea a los trabajadores; en 2015 hubo intercambio público sobre su implementación.
  • El HTML vigente define objetos BroadcastChannel con nombre. El navegador copia el mensaje para otros canales elegibles que comparten nombre y clave de almacenamiento; cada destino decide qué hacer con el aviso.

Pestaña uno: «Salir». Pestaña dos: la lista de favoritos sigue mostrando datos de la cuenta. Pestaña tres: una página de ajustes presume de que el lector continúa dentro. El sitio ya cambió de estado, pero sus ventanas no se han enterado. Hacer que cada una interrogue al servidor a cada momento es una manera aparatosa de preguntar lo que otra pestaña acaba de saber. A veces basta con que el navegador pase un recado por el pasillo.

El expediente público del W3C abierto en 2013 conserva la discusión original. Entre las propuestas aparece un objeto que recibe un nombre de canal y puede llamar a postMessage(). Otros objetos del mismo origen y canal escucharían el mensaje. Los detalles se debatían; la intuición era que las ventanas podían compartir una conversación sin intercambiar antes una lista de direcciones de todas las demás.

El pasillo incluyó más oficinas. En enero de 2014 se abrió otro expediente del W3C para que los trabajadores pudieran usar BroadcastChannel. La actualización de junio registra el cambio en el trabajo de HTML. Un trabajador podía estar ocupado detrás del escenario mientras una pestaña se abría o cerraba; los avisos con nombre debían alcanzarlo también cuando estuviera en condiciones de recibirlos.

Un intercambio público de WHATWG en enero de 2015 hablaba de una implementación que se encaminaba a Firefox Nightly y remitía a la especificación. El índice del borrador HTML 5.1 del W3C, de octubre de 2015 enumeraba BroadcastChannel entre las interfaces y enlazaba su definición en WHATWG. Eran huellas de trabajo técnico en marcha, visibles antes de que un usuario pensara siquiera en la coreografía de sus pestañas.

El estándar HTML actual describe el reparto con precisión. El canal lleva un nombre. Al publicar un mensaje, el navegador serializa el dato y encuentra otros canales elegibles con el mismo nombre y la misma clave de almacenamiento. Excluye al emisor y programa un evento message para cada destino. La ventana debe tener un documento activo; el trabajador ha de seguir disponible. Un canal en otra partición de almacenamiento tiene su propio pasillo.

La propia norma usa el cierre de sesión como ejemplo. Una pestaña avisa a otra, y la segunda actualiza lo que muestra. El mensaje transmite el hecho; el código del sitio se encarga de la cuenta y de la pantalla. El mismo patrón sirve para un cambio de tema visual o para que varias vistas sepan que una tarea terminó. Un nombre compartido organiza la conversación, mientras cada página conserva la responsabilidad de responder.

Al acabar, conviene cerrar el canal. El estándar recuerda que un objeto con un escuchador registrado puede continuar vivo y consumir memoria. El mensajero trabaja mejor cuando las oficinas saben cuándo apagar el timbre. La invención fue pequeña y muy humana: si todas las pestañas comparten escritorio, al menos que se hablen.