Descripción general
El tiempo real tiene dos superficies:
- API REST para gestión de canales, historial de mensajes, estadísticas de entrega, permisos y configuración de retención.
- Socket.IO para suscripción en vivo, publicación, presencia y eventos entregados.
La API REST no transmite mensajes. Usa la conexión Socket.IO o el SDK de TypeScript para eventos en vivo.
Autenticación
Los puntos finales REST de administrador requieren un token de administrador de proyecto o clave API.
También puedes pasar claves API con:
Las conexiones Socket.IO se autentican a través del objeto Socket.IO auth:
Los clientes de servidor/administrador pueden pasar una clave API:
Pub/Sub de Socket.IO
Instala el cliente Socket.IO cuando no estés usando el SDK de InsForge:
Conectar y suscribirse
Escuchar eventos
Publicar
El socket debe suscribirse correctamente a un canal antes de poder publicar en ese canal.
Cancelar suscripción
Eventos de socket
| Evento | Dirección | Descripción |
|---|
realtime:subscribe | Cliente a servidor | Suscribirse a un canal. El reconocimiento devuelve éxito/error e instantánea de presencia. |
realtime:unsubscribe | Cliente a servidor | Abandonar un canal. |
realtime:publish | Cliente a servidor | Insertar un mensaje de usuario en la tubería en tiempo real. |
| Custom event name | Servidor a cliente | Mensaje entregado, emitido bajo el eventName del mensaje. |
presence:join | Servidor a cliente | Un miembro lógico se hace presente en el canal. |
presence:leave | Servidor a cliente | Un miembro lógico ya no está presente en el canal. |
realtime:error | Servidor a cliente | La suscripción o publicación falló. |
Patrones de canal
Crea definiciones de canal antes de que los clientes se suscriban.
| Patrón | Coincide |
|---|
orders | orders |
order:% | order:123, order:456 |
chat:%:messages | chat:room-1:messages |
La coincidencia de patrones usa SQL LIKE, por lo que % es el comodín. _ no se acepta en patrones de canal porque también es un comodín SQL.
Canales
Listar canales
Respuesta:
Crear canal
Cuerpo de la solicitud:
| Campo | Tipo | Requerido | Descripción |
|---|
pattern | string | Sí | Patrón de canal. |
description | string | No | Descripción legible por humanos. |
webhookUrls | string[] | No | URLs de webhook para cada mensaje entregado. |
enabled | boolean | No | Por defecto es true. Los canales deshabilitados no pueden unirse ni entregarse. |
Obtener canal
Actualizar canal
Eliminar canal
El historial de mensajes se conserva. Los canales eliminados establecen valores channelId de mensajes existentes en null.
Mensajes
Listar mensajes
Parámetros de consulta:
| Parámetro | Tipo | Descripción |
|---|
channelId | uuid | Filtrar por ID de canal. |
eventName | string | Filtrar por nombre de evento. |
limit | integer | 1 a 1000. Por defecto es 100. |
offset | integer | Por defecto es 0. |
Respuesta:
Estadísticas de mensajes
Parámetros de consulta:
| Parámetro | Tipo | Descripción |
|---|
channelId | uuid | Filtrar estadísticas por ID de canal. |
since | date-time | Incluir solo mensajes creados después de esta marca de tiempo. |
retentionDays: null significa que los mensajes se retienen indefinidamente.
Permisos
Devuelve políticas RLS definidas por el usuario para:
- Comprobaciones de suscripción en
realtime.channels.
- Comprobaciones de publicación en
realtime.messages.
Configuración
Obtener configuración en tiempo real
Actualizar configuración en tiempo real
Usa null para retener mensajes indefinidamente. Los enteros positivos retienen mensajes durante esa cantidad de días.
Webhooks
Cuando un canal tiene webhookUrls, cada mensaje entregado a través de ese canal se envía a cada URL.
El cuerpo de la solicitud es la carga útil de mensaje original. Los encabezados identifican la entrega:
| Encabezado | Valor |
|---|
X-InsForge-Event | Nombre del evento |
X-InsForge-Channel | Nombre del canal resuelto |
X-InsForge-Message-Id | UUID del mensaje |
Los intentos de entrega se reflejan en whAudienceCount y whDeliveredCount en el historial de mensajes.