Actualizaciones en tiempo real de las extensiones

Las actualizaciones en tiempo real proporcionan una ruta de comunicación instantánea desde tus servidores directamente hacia las instalaciones de extensiones. Puedes enviar y recibir datos a medida que ocurren eventos. Ya sea que la uses para mensajería instantánea, activar tareas en segundo plano o sincronizar datos del dispositivo, esta es una operación fundamental en varios servicios modernos. En las extensiones de Chrome, hay varias opciones para tener comunicación en tiempo real.

  • Web Push, o API de Push, es un estándar web que te permite enviar y recibir mensajes en una extensión de Chrome desde cualquier proveedor Push, o incluso con tu propio servidor web.
  • chrome.gcm es una API específica de extensión heredada que te permite enviar y recibir mensajes con Firebase Cloud Messaging.
  • WebSockets es un protocolo de bajo nivel que te permite abrir una conexión bidireccional entre la extensión de Chrome y el servidor.

Situaciones comunes

A continuación, se muestran algunas situaciones comunes en las extensiones de Chrome en las que la comunicación en tiempo real es fundamental:

Mantén a los usuarios actualizados con los cambios.

Si sincronizas archivos, parámetros de configuración o cualquier otro tipo de información entre varios usuarios, Web Push es la manera perfecta de enviar actualizaciones silenciosas a tu extensión para hacerle saber que actualice el estado del servidor.

¿Permites que los usuarios informen errores o problemas? Puedes realizar la integración con un proveedor de envío para informarle en cuanto tengas una actualización para compartir, directamente en tu extensión.

Envía notificaciones a los usuarios.

Si bien puedes enviar notificaciones completamente del cliente, si tienes una lógica en el servidor sobre quién, qué, dónde o cuándo enviar una notificación, la Web push es la opción más adecuada para el futuro.

Para enviar mensajes a un solo subconjunto de usuarios, el envío es la mejor opción. Si bien Firebase Cloud Messaging ofrece Topics (también conocidos como canales), solo está disponible en su API de HTTP Cloud Messaging. Esta es diferente de la versión heredada que usa chrome.gcm. Si deseas enviar mensajes amplios a todos los usuarios, incluidos los que tienen versiones heredadas de Chrome (versiones anteriores a Chrome 121), chrome.gcm es la opción ideal. chrome.gcm se basa en las APIs heredadas de mensajería de Firebase y es compatible con Chrome desde hace más de una década.

Puedes usar Web Push o chrome.gcm para enviar notificaciones a los usuarios cuando ocurre algo importante en su cuenta, como cuando llega un mensaje nuevo o cuando se comparte un archivo.

Mensajería instantánea

¿Necesita una comunicación bidireccional frecuente? Entonces, un socket web puede ser la mejor opción para ti. Abre una conexión bidireccional entre tu extensión y tu servidor (o incluso directamente con otros usuarios). Te permite intercambiar datos y mensajes en tiempo real. Si bien son una excelente opción en la Web en general, tienen algunas limitaciones con las extensiones que debes tener en cuenta si planeas usarlas.

En el resto de esta guía, analizaremos con más detalle las opciones disponibles.

Notificaciones push con la API de Push

Con la API de Push, puedes usar cualquier proveedor de Push para enviar notificaciones y mensajes push. El service worker procesará un envío de la API de Push en cuanto lo reciba. Si se suspendió la extensión, un envío la activará de nuevo. El proceso para usarlo en extensiones es exactamente el mismo que se usaría en la Web abierta.

Notificaciones push con chrome.gcm

La API de chrome.gcm proporciona una conexión directa a Firebase Cloud Messaging (FCM), un servicio para enviar actualizaciones en tiempo real a aplicaciones web y apps para dispositivos móviles. Esta es una API de extensión específica de Chrome que se agregó muchos años antes de que Push estuviera disponible en los navegadores. Se compiló con las API de HTTP heredadas de Firebase (ahora obsoletas). Si bien esas APIs dejaron de estar disponibles en otros lugares, no quedan obsoletas en las extensiones. Seguirán trabajando en el futuro cercano. Sin embargo, dado que este es el backend de envío heredado, carece de funciones como Topics.

Si bien un servicio de backend de FCM es un requisito obligatorio para que las notificaciones lleguen a los usuarios en Chrome, no necesitas usar chrome.gcm para enviar mensajes. Todos los proveedores de envío pueden enviar y recibir mensajes y eventos a una cuenta de Firebase con el servicio web push. Si bien esta todavía es una API de extensión de Chrome completamente compatible, la práctica recomendada es priorizar los estándares web como la API de Push para extender otros específicos como este. Si tu caso de uso funciona mejor con chrome.gcm, hay un instructivo detallado para configurar chrome.gcm desde cero.

Mensajes en tiempo real con WebSockets

Los WebSockets han sido un pilar de la mensajería en tiempo real en la Web durante más de una década. Son la opción principal para los eventos en tiempo real en la Web, lo que proporciona una conversación continua y bidireccional. Los WebSockets funcionan en diversos componentes de extensión, como secuencias de comandos de contenido, ventanas emergentes, paneles laterales o service workers en segundo plano. Si bien, en general, son una excelente opción en la Web, tienen algunas limitaciones con las extensiones que debes tener en cuenta si planeas usarlas.

No es la mejor opción para las notificaciones push

Dado que WebSockets se ejecuta en la plataforma web, en lugar de usar una API de plataforma de extensiones como chrome.gcm, Chrome no tiene forma de activar tu extensión cuando se inicia una conexión de Websocket fuera de ella.

Solo conexiones activas

Chrome suspende las extensiones que no se usan después de 30 segundos. Hay una serie de heurísticas en Chrome que determinan si la extensión se está "en uso", una de las cuales es una conexión de WebSocket activa. Chrome no suspenderá una extensión que haya enviado o recibido un mensaje de WebSocket en los últimos 30 segundos. Si usas WebSockets en tu extensión y necesitas asegurarte de que no se cierre de forma prematura, puedes enviar un mensaje de señal de monitoreo de funcionamiento para mantener la conexión. Esto implica enviar mensajes periódicos al servidor para informarles a Chrome y a él que aún estás activo. Puedes encontrar un ejemplo de cómo mantener un websocket activo indefinidamente en nuestra documentación de WebSocket.