Aprovechando el poder de MessageChannel y BroadcastChannel

Rate this content
Bookmark

Adéntrate en el mundo de las API's web - MessageChannel y BroadcastChannel. Explora cómo estas poderosas API facilitan la comunicación sin fisuras en web workers, iframes y entre pestañas. Únete a nosotros mientras descubrimos las técnicas para mejorar las interacciones web y desbloquear nuevas posibilidades. ¡Descubre la clave para una colaboración más fluida y una mejor conectividad en tus proyectos web!

FAQ

Daniel Jakobsen es un ingeniero de personal de pila completa que trabaja en Vim, una empresa dedicada a la salud. En la charla, él comparte sus experiencias y conocimientos sobre la comunicación entre iframes y web workers utilizando APIs web.

PostMessage es una función que permite la comunicación segura entre iframes y otros componentes web dentro del navegador. Se utiliza para enviar mensajes entre el documento principal y los iframes o web workers, facilitando la interacción entre diferentes partes de una aplicación web.

La API de canal de mensajes es una API de navegador que permite la comunicación segura y directa entre dos puntos a través de dos puertos conectados. Cuando un mensaje se envía a través de un puerto, se recibe en el otro, permitiendo una comunicación bidireccional sin interferencia externa.

La API de canal de mensajes ofrece una línea de comunicación más segura y directa, reduciendo la contaminación del controlador de eventos global y disminuyendo la sobrecarga computacional. Además, simplifica la implementación de comunicaciones complejas como las promesas y la comunicación bidireccional.

Message-channel-shake es una biblioteca en desarrollo que facilita la implementación de la API de canal de mensajes en aplicaciones React. Ofrece plantillas para configurar una comunicación bidireccional y soporte de promesas entre iframes y la página principal, usando un proveedor y hooks específicos para React.

Implementar un sistema de mensajería con soporte de promesas utilizando la API de canal de mensajes involucra crear un canal, enviar mensajes a través de sus puertos y manejar las respuestas de forma asíncrona. Esto permite que las operaciones asíncronas completen y devuelvan datos a la parte solicitante, facilitando la gestión de estados y la ejecución de lógica condicional.

Daniel Jakobsen
Daniel Jakobsen
11 min
23 Oct, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla explora las API web ocultas para comunicarse entre iframes y web workers. Discute las desventajas de un enfoque de mensajería ingenuo e introduce la API de canal de mensajes como una solución. El orador también presenta una biblioteca llamada message-channel-shake que simplifica la implementación del canal de mensajes. La charla cubre varias tecnologías como React, canal de transmisión y objetos transferibles.

1. Introducción a la mensajería web

Short description:

Bienvenidos a esta charla sobre mensajería web. Soy Daniel Jakobsen, un ingeniero de personal de pila completa en Vim. Exploraremos las API web ocultas para comunicarnos entre iframes y web workers. Comenzaremos con un ejemplo de mensajería ingenua y luego nos sumergiremos en la mensajería basada en canales de mensajes utilizando la API de canal de mensajes.

Hola a todos. Bienvenidos a esta charla sobre mensajería web. Soy Daniel Jakobsen. Soy un ingeniero de personal de pila completa en Vim. No el editor. Es una empresa diferente. Nos dedicamos a la salud.

Hemos encontrado muchos problemas que necesitábamos comunicar entre iframes y web workers y quería compartir con ustedes algunos de los conocimientos que hemos encontrado y realmente algunas API web ocultas que no son tan conocidas que puedes aprovechar y realmente te pueden ayudar con la comunicación entre estos web components.

¿Entonces, qué vamos a aprender? Vamos a comenzar con un ejemplo de mensajería ingenua con iframes solo para ver cómo podemos comunicarnos entre ellos con los bloques de construcción básicos. Y luego vamos a deep dive un poco en la mensajería basada en canales de mensajes. Vamos a aprovechar algo que se llama API de canal de mensajes. Es una browser API que ha estado aquí durante mucho, mucho tiempo, pero no es tan conocida, al menos no lo era para mí. Y, sí, vamos a ver esta demostración básica.

2. Ejemplo de Comunicación Ingenua

Short description:

Tenemos un ejemplo de comunicación ingenua donde un iframe incrustado envía un mensaje a la página principal. La página HTML principal espera a que se cargue el iframe y luego utiliza postMessage para enviar una carga útil. El iframe incrustado recibe el mensaje y verifica su origen antes de enviar una respuesta a la página principal.

Aquí tenemos un ejemplo de comunicación ingenua. Tenemos el sitio principal y dentro de él, hay un iframe incrustado. Y podemos ver que tenemos el mensaje de vuelta del iframe. Este es el mensaje que el iframe está enviando, y dentro del iframe incrustado hay un hola desde la página principal. Entonces veamos cómo va a funcionar esto.

Entonces, este es el principal HTML. Y dentro de aquí, lo primero que hacemos es esperar a que se cargue el iframe incrustado. Una vez que ocurre eso, usamos postMessage. PostMessage es el bloque de construcción más básico de la comunicación. Nos permite enviar mensajes a iframes, web workers, la mayoría de los web components en el navegador soportan postMessage. Y aquí es exactamente lo que hacemos, tomamos el elemento iframe y usamos postMessage, enviamos una carga útil y vamos a ver en un momento cómo el iframe incrustado recibe este mensaje.

Entonces, esta es la página HTML del iframe incrustado, y dentro de aquí tenemos un adEventListener, es un adEventListener global en la ventana, y estamos escuchando el evento de mensaje, y el postMessage anterior llega directamente, una vez más, llega directamente aquí, y dentro de aquí hay una lógica para verificar que el mensaje proviene de la página principal, porque podría haber múltiples mensajes que llegan aquí. Hacemos alguna lógica, y luego usamos nuevamente el postMessage, pero esta vez el iframe incrustado hace el postMessage en la página principal. Entonces en la window.parent también hay window.top que puedes hacer postMessage y funciona de la misma manera. Ahora en la página principal html tenemos el oyente de eventos global. Podemos manejar el

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Instalar Nada: Interfaces de Aplicación con APIs Nativas del Navegador
JSNation 2024JSNation 2024
31 min
Instalar Nada: Interfaces de Aplicación con APIs Nativas del Navegador
Tal vez no necesites tanto JS como crees para lograr patrones comunes de UI con estas nuevas APIs nativas del navegador. Sumérgete en las nuevas y futuras APIs de CSS, HTML y JS que hacen que nuestro código sea más liviano y rápido de implementar.
Ampliando los límites de la codificación de video en navegadores con WebCodecs
JSNation 2023JSNation 2023
25 min
Ampliando los límites de la codificación de video en navegadores con WebCodecs
Top Content
La codificación de video de alta calidad en los navegadores ha sido tradicionalmente lenta, de baja calidad y no permitía mucha personalización. Esto se debe a que los navegadores nunca tuvieron una forma nativa de codificar videos aprovechando la aceleración de hardware. En esta charla, repasaré los secretos de la creación de videos de alta calidad en los navegadores de manera eficiente con el poder de WebCodecs y WebAssembly. Desde contenedores de video hasta muxing, audio y más allá, esta charla te dará todo lo que necesitas para renderizar tus videos en los navegadores hoy en día!
Visualización de Cuellos de Botella de Rendimiento Front-End
React Summit 2020React Summit 2020
34 min
Visualización de Cuellos de Botella de Rendimiento Front-End
Hay muchas formas de medir el rendimiento web, pero lo más importante es medir lo que realmente importa a los usuarios. Esta charla trata sobre cómo medir, analizar y solucionar el código JavaScript lento utilizando las API del navegador.
API WebHID: Controla Todo a través de USB
JSNation 2022JSNation 2022
23 min
API WebHID: Controla Todo a través de USB
El sistema operativo permite controlar diferentes dispositivos utilizando el protocolo de dispositivo de interfaz humana desde hace mucho tiempo. Con la API WebHID, puedes hacer lo mismo directamente desde el navegador. Vamos a hablar sobre las características y limitaciones del protocolo. Intentaremos conectar algunos dispositivos a la laptop y controlarlos con JavaScript.
¡MIDI en el Navegador... ¡Vamos a Rockear la Web!
JSNation 2022JSNation 2022
28 min
¡MIDI en el Navegador... ¡Vamos a Rockear la Web!
Si tienes un instrumento de música electrónica fabricado en las últimas 3 décadas, es muy probable que admita el protocolo MIDI. ¿Qué tal si te digo que es posible interactuar con tu keytar o máquina de ritmos directamente desde tu amado navegador? Te volverías loco, ¿verdad? Bueno, prepárate para hacerlo...Con soporte incorporado en Chrome, Firefox y Opera, esta posibilidad ahora es una realidad. Esta charla presentará a la audiencia la API Web MIDI y mi propia biblioteca WEBMIDI.js para que puedas empezar a rockear rápidamente.¡Desarrolladores web, preparen sus sintetizadores!
Notificaciones Push Web Bien Hechas
JSNation 2023JSNation 2023
11 min
Notificaciones Push Web Bien Hechas
Finalmente, la API de Notificaciones Push Web está disponible en todos los principales navegadores y plataformas. Es una característica que puede llevar la experiencia de tus usuarios al siguiente nivel o... ¡arruinarla! En mi sesión, después de una introducción técnica sobre cómo funcionan las Notificaciones Push Web, exploraremos la implementación de diálogos inteligentes de solicitud de permisos, varios tipos de notificaciones en sí mismas y la comunicación con tu aplicación para escenarios más sofisticados, todo hecho correctamente, con la mejor experiencia de usuario posible.

Workshops on related topic

Escribiendo Módulos Universales para Deno, Node y el Navegador
Node Congress 2022Node Congress 2022
57 min
Escribiendo Módulos Universales para Deno, Node y el Navegador
Workshop
Luca Casonato
Luca Casonato
En este masterclass te guiaré en la escritura de un módulo en TypeScript que pueda ser utilizado por usuarios de Deno, Node y los navegadores. Explicaré cómo configurar el formato, linting y pruebas en Deno, y luego cómo publicar tu módulo en deno.land/x y npm. Comenzaremos con una breve introducción sobre qué es Deno.