Actualizaciones en tiempo real de las extensiones

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

  • Web Push o la API de Push es un estándar web que te permite enviar y recibir mensajes en extensiones de Chrome desde cualquier proveedor de envío, o incluso con tu propio servidor web.
  • chrome.gcm es una API específica de la 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 tu extensión de Chrome y tu servidor.

Situaciones comunes

Estas son 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 y otro tipo de información entre varios usuarios, Web Push es la manera perfecta de enviar actualizaciones silenciosas a tu extensión para informarle que debe actualizar el estado desde el servidor.

¿Permites que los usuarios informen errores o problemas? Puedes integrarlo con un proveedor de notificaciones de envío para informarles en cuanto tengas una actualización que puedas compartir, directamente en la extensión.

Envía notificaciones a los usuarios.

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

Para enviar mensajes a solo un subconjunto de usuarios, la opción de 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. 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, que se basa en las APIs de mensajería de Firebase heredadas, se admite en Chrome desde hace más de una década.

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

Mensajería instantánea

¿Necesitas comunicación frecuente y bidireccional? 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 a otros usuarios). Te permite intercambiar datos y mensajes en tiempo real. Si bien, en general, son una excelente opción en la Web, tienen algunas limitaciones con las extensiones que debes tener en cuenta si piensas 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 servicios push para enviar notificaciones y mensajes push. Tu service worker procesará un envío de la API de Push en cuanto se reciba. Si se suspendió la extensión, un push la volverá a activar. El proceso para usarlo en extensiones es exactamente el mismo que usarías en la Web abierta.

Envía 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 APIs de HTTP heredadas (ahora obsoletas) de Firebase. Si bien esas APIs dejaron de estar disponibles en otro lugar, no dejaron de estar disponibles en las extensiones. Seguirán trabajando en el futuro inmediato. Sin embargo, como 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 de Chrome, no es necesario que uses chrome.gcm para enviar mensajes. Todos los proveedores de servicios push pueden enviar y recibir mensajes y eventos en una cuenta de Firebase mediante el servicio push web. Si bien esta sigue siendo una API de extensiones de Chrome totalmente compatible, se recomienda preferir los estándares web como la API de Push a extensiones específicas como esta. Si mejor funciona el caso de uso con chrome.gcm, consulta este instructivo detallado sobre cómo configurar chrome.gcm desde cero.

Mensajes en tiempo real con WebSockets

Los WebSockets han sido una pieza fundamental de los mensajes en tiempo real en la Web durante más de una década. Han sido la opción preferida para eventos en tiempo real en la Web, ya que proporcionan una conversación continua y bidireccional. Los WebSockets funcionan en diversos componentes de extensión, ya sean 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 piensas usarlas.

No es la mejor opción para las notificaciones push

Los WebSockets se ejecutan en la plataforma web, en lugar de usar una API de plataforma de extensiones como chrome.gcm, Chrome no tiene manera de activar la extensión cuando se inicia una conexión de Websocket fuera de la extensión.

Solo conexiones activas

Chrome suspende las extensiones que no se usan después de 30 segundos. Chrome incluye una serie de heurísticas para determinar si la extensión se "usa", 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 Heartbeat para mantener la conexión. Esto implica enviar mensajes periódicos al servidor, para que tanto este como Chrome sepan que aún estás activo. En nuestra documentación de WebSocket se encuentra un ejemplo de cómo mantener activo un WebSocket de forma indefinida.