Extraiga eventos de Auth0 a su propio ritmo mediante la Events API basada en Server-Sent Events (SSE).
La Events API proporciona una alternativa basada en extracción a los flujos de eventos. En lugar de que Auth0 envíe eventos a un destino, su aplicación abre una conexión de larga duración a GET /api/v2/events y recibe eventos como un flujo de Server-Sent Events (SSE). Puede controlar cuándo conectarse, cómo reanudar la conexión después de una desconexión y con qué rapidez consumir los eventos.Este enfoque es útil cuando necesita:
Procesar eventos a su propio ritmo sin tener que implementar un endpoint de webhook.
Reproducir eventos desde un momento específico para completar datos históricos o recuperarse de errores.
Integrarse con sistemas que prefieren el sondeo en lugar de la entrega push.
Cuando su aplicación se conecta a la Events API, recibe un flujo de mensajes SSE. Cada mensaje incluye un campo id que actúa como un offset. Si la conexión se interrumpe, su aplicación se vuelve a conectar y proporciona el último offset que recibió. Auth0 reanuda la entrega desde ese punto, por lo que no se pierde ningún evento.El flujo de SSE incluye los siguientes tipos de mensajes:
Tipo de mensaje
Propósito
:connected
Confirma que la conexión se ha establecido. Se trata de un comentario de SSE, no de un evento de datos.
retry: <ms>
Indica al cliente SSE cuánto tiempo debe esperar antes de volver a conectarse tras una desconexión.
event: <type> (por ejemplo, user.created)
Un evento real con la carga útil completa en el campo data.
event: offset-only
Un marcador de progreso que se envía a intervalos regulares (con la frecuencia del heartbeat). Actualiza el offset sin entregar datos de eventos.
: seguido de texto (por ejemplo, : heartbeat)
Un comentario keep-alive que evita que los proxies y los balanceadores de carga cierren conexiones inactivas. No requiere ninguna acción.
event: error
Un error terminal. El flujo se cierra después de este mensaje.
Use parámetros de consulta para filtrar o reanudar el flujo:
Parameter
Type
Description
from
string
Un offset devuelto en un campo id anterior. La entrega se reanuda después de este offset.
from_timestamp
string
Una marca de tiempo ISO 8601. Devuelve eventos que ocurrieron en ese momento o después. Es mutuamente excluyente con from. Se recomienda usarlo para la configuración inicial o para reproducir eventos desde un momento conocido; para el consumo continuo, prefiera reanudar con from, ya que los offsets son más precisos.
event_type
string
El tipo de evento que se incluirá. Repita el parámetro para cada tipo (por ejemplo, event_type=user.created&event_type=user.updated).
Las conexiones SSE pueden interrumpirse por muchos motivos: problemas de red, vencimiento del token o rotación de conexiones del lado del servidor (Auth0 cierra periódicamente las conexiones para equilibrar la carga; por lo general, cada pocos minutos). Las bibliotecas cliente SSE estándar gestionan esto de forma transparente, reconectándose y enviando el último offset.Hay dos formas de proporcionar el offset al volver a conectarse:
Encabezado Last-Event-ID — el mecanismo estándar de reconexión de SSE. La mayoría de las bibliotecas cliente SSE establecen este encabezado automáticamente al volver a conectarse.
Parámetro de consulta from — úselo cuando su cliente no admita el encabezado Last-Event-ID.
Si se proporcionan ambos, el encabezado Last-Event-ID tiene prioridad.
Guarda el valor más reciente de id de cada mensaje (incluidos los mensajes offset-only) en almacenamiento persistente. Si tu aplicación se reinicia, usa el offset guardado para reanudar la entrega desde donde se interrumpió.
Los mensajes cuyo campo event coincide con un tipo de evento conocido (por ejemplo, user.created) contienen la carga útil completa del evento en el campo data. Analiza el JSON y procesa el evento según tu lógica de negocio.
Auth0 envía mensajes offset-only a intervalos regulares (según la frecuencia de heartbeat) para avanzar su posición en el flujo. Estos mensajes no contienen una carga útil de evento. Actualice el offset almacenado cuando los reciba para que una reconexión futura no vuelva a reproducir eventos que ya haya superado.
Un mensaje event: error indica un error terminal, como un offset vencido o un problema del lado del servidor. Después de recibir este mensaje, el flujo se cierra. Su aplicación debe registrar el error y, a continuación, volver a conectarse con el offset adecuado o con un from_timestamp nuevo.
Las líneas que comienzan con : son comentarios de SSE que se usan como latidos. Mantienen la conexión activa a través de proxies y balanceadores de carga. No se requiere ningún procesamiento.
Auth0 cierra periódicamente las conexiones SSE para equilibrar la carga (normalmente, cada pocos minutos). Este comportamiento es el esperado, no un error. Las bibliotecas cliente SSE estándar (incluido el paquete npm eventsource) se reconectan automáticamente mediante el encabezado Last-Event-ID, por lo que su aplicación reanuda el procesamiento desde el offset correcto sin perder eventos.Si crea un cliente SSE personalizado, asegúrese de que gestione las caídas de conexión correctamente; para ello, conserve el offset más reciente y vuelva a conectarse con él.
El paquete npm eventsource implementa el protocolo SSE y gestiona la reconexión automáticamente mediante el encabezado Last-Event-ID. Si usa una biblioteca SSE diferente, verifique que admita la reconexión automática y el reenvío del offset.