Actualizaciones en tiempo real en las extensiones

Las actualizaciones en tiempo real proporcionan una ruta de comunicación instantánea desde tus servidores directamente a las instalaciones de tu extensión. Puedes enviar y recibir datos a medida que ocurren los eventos. Ya sea que lo 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. Existen 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 una extensión de Chrome desde cualquier proveedor de Push, o incluso con tu propio servidor web.
  • chrome.gcm es una API heredada específica de la extensión 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

Estos son algunos casos comunes en las extensiones de Chrome en los que la comunicación en tiempo real es fundamental:

Mantener a los usuarios al tanto de los cambios

Si sincronizas archivos, parámetros de configuración o cualquier otro tipo de información entre varios usuarios, la API de Web Push es la forma perfecta de enviar actualizaciones silenciosas a tu extensión para que sepa que debe actualizar el estado desde el servidor.

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

Enviar notificaciones a los usuarios

Si bien puedes enviar notificaciones completamente del lado del cliente, si tienes lógica del lado del servidor para determinar a quién, qué, dónde o cuándo enviar una notificación, la API de Web Push es la opción más preparada para el futuro.

Si deseas enviar mensajes solo a un subconjunto de usuarios, Push es la mejor opción. Si bien Firebase Cloud Messaging ofrece temas (también conocidos como canales), solo están disponibles en su API de Cloud Messaging HTTP. Esto es diferente de la versión heredada que usa chrome.gcm. Si deseas enviar mensajes generales a todos los usuarios, incluidos los que usan versiones heredadas de Chrome (anteriores a Chrome 121), chrome.gcm es la opción ideal. chrome.gcm, que se basa en las APIs heredadas de Firebase Cloud Messaging, es compatible con Chrome desde hace más de una década.

Puedes usar las notificaciones push web o chrome.gcm para enviar notificaciones a los usuarios cuando sucede algo importante en su cuenta, por ejemplo, cuando llega un mensaje nuevo o cuando se comparte un archivo.

Mensajería instantánea

¿Necesitas 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. Tu service worker procesará un envío de la API de Push en cuanto lo reciba. Si la extensión se suspendió, una notificación push la reactivará. El proceso para usarlo en extensiones es exactamente el mismo que usarías 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 aplicaciones 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 creó con las APIs de HTTP heredadas (ahora obsoletas) de Firebase. Si bien esas APIs están obsoletas en otros lugares, no lo están en las extensiones. Seguirán funcionando en el futuro inmediato. Sin embargo, como se trata del backend de envío heredado, carece de funciones como Topics.

Si bien un servicio de backend de FCM es un requisito indispensable para que las notificaciones lleguen a los usuarios en Chrome, no es necesario que uses chrome.gcm para enviar mensajes. Todos los proveedores de Push pueden enviar y recibir mensajes y eventos a una cuenta de Firebase a través de la función Push web. Si bien esta sigue siendo una API de extensiones de Chrome totalmente compatible, la práctica recomendada es preferir los estándares web, como la API de Push, a los específicos de las extensiones, como esta. Si tu caso de uso se adapta mejor a chrome.gcm, hay una guía detallada sobre cómo 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. Han sido la opción predilecta para los eventos en tiempo real en la Web, ya que proporcionan una conversación continua y bidireccional. Los WebSockets funcionan en una variedad de componentes de extensión, ya sean secuencias de comandos de contenido, ventanas emergentes, paneles laterales o service workers en segundo plano. 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.

No es ideal para las notificaciones push

Dado que los WebSockets se ejecutan en la plataforma web, en lugar de usar una API de plataforma de extensión 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. Chrome usa varias heurísticas para determinar si se "está usando" la extensión, y una de ellas es una conexión 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 latido para mantener la conexión. Esto implica enviar mensajes periódicos al servidor para que tanto él como Chrome sepan que sigues activo. En nuestra documentación de WebSocket, se incluye un ejemplo de cómo mantener un WebSocket activo de forma indefinida.