Skip to main content

Instalación

Find the anon key with npx @insforge/cli secrets get ANON_KEY, or in the dashboard: click Install and open API Keys.

Modelo mental

El SDK de TypeScript abre una conexión Socket.IO a tu backend de InsForge. Te suscribes a canales con nombre, escuchas nombres de eventos y opcionalmente publicas eventos de vuelta a los canales a los que te has unido. Los eventos pueden provenir de dos lugares:
  • Disparadores de base de datos que llaman a realtime.publish(channel, event, payload).
  • Clientes que llaman a insforge.realtime.publish(channel, event, payload).
Para el modelo de canal de backend y RLS, consulta Descripción general de tiempo real.

Inicio rápido

Registra los manejadores connect, disconnect, connect_error y error antes de llamar a connect() para que las fallas tempranas de conexión sean visibles.

connect()

Establece una conexión WebSocket.
Devuelve:
Notas:
  • El SDK incluye el token de autenticación actual cuando existe uno. Si no hay un usuario que ha iniciado sesión, puede usar la clave anónima configurada.
  • Múltiples llamadas a connect() mientras una conexión ya está en progreso reutilizan la misma promesa de conexión.
  • El intento de conexión expira después de 10 segundos.

subscribe()

Suscríbete a un canal y recibe la instantánea de presencia actual.
Parámetros: Devuelve:
subscribe() se conecta automáticamente si es necesario. Aún se recomienda llamar a connect() explícitamente para que los manejadores de eventos de conexión ya estén adjuntos. subscribe() es idempotente: llamarlo de nuevo para un canal al que ya te uniste vuelve a solicitar la suscripción y resuelve la instantánea de presencia actual del servidor. El servidor rastrea la presencia por miembro lógico, por lo que las suscripciones repetidas nunca producen miembros duplicados ni eventos presence:join espurios.

publish()

Publica un evento en un canal.
Parámetros:
La publicación requiere una suscripción previa exitosa al mismo canal. Si RLS está habilitado en realtime.messages, la publicación también se verifica contra las políticas INSERT.
Las fallas de publicación se emiten a través del evento error.

on()

Escucha eventos personalizados, eventos de conexión, eventos de presencia y errores de tiempo real.
Eventos reservados:

once()

Escucha un evento una vez, luego elimina el listener automáticamente.

off()

Elimina un listener de eventos.

unsubscribe()

Abandona un canal.
unsubscribe() es de disparar y olvidar. Si este era el último socket de un miembro lógico, otros suscriptores reciben presence:leave.

disconnect()

Cierra el WebSocket y limpia las suscripciones locales.

Forma del mensaje

Los mensajes entregados incluyen los campos de tu carga útil más los metadatos del servidor.
Metadatos:
senderType es system para mensajes disparados por la base de datos y user para mensajes publicados por el cliente.

Presencia

Una suscripción exitosa devuelve la instantánea de presencia actual.
Miembro de presencia:
Escucha los cambios:

Lectura del estado de presencia

El SDK mantiene la lista de miembros de cada canal suscrito — inicializada desde la instantánea de suscripción y mantenida actualizada a partir de los deltas presence:join/presence:leave y las resincronizaciones de reconexión. Léela en cualquier momento en lugar de fusionar los deltas tú mismo:
Devuelve una matriz vacía para canales a los que no estás suscrito. Mientras el socket está brevemente desconectado, mantiene el último estado conocido, reemplazado por una instantánea nueva tan pronto como el canal se vuelve a suscribir.

Reconexiones

Cuando la conexión se cae, el SDK vuelve a suscribirse automáticamente a cada canal en la reconexión y emite presence:sync con la instantánea de presencia nueva para cada uno. Los miembros que se unieron o abandonaron mientras estabas desconectado no producen deltas individuales presence:join/presence:leave, por lo que reemplaza — no fusiones — cualquier estado que mantengas fuera del SDK:
Si renderizas directamente desde getPresenceState(), presence:sync es simplemente tu señal de re-renderizado. Si una resuscripción es rechazada (por ejemplo, el acceso del usuario fue revocado mientras estaba desconectado), el SDK descarta el canal y emite error en su lugar.

Actualizaciones de tokens

Cuando el token de acceso del usuario que ha iniciado sesión se actualiza, el SDK deja conectado un socket establecido — no hay reautenticación en banda, reconexión ni rotación de presencia. Una conexión inicial posterior o reconexión de red obtiene el token de acceso más reciente antes de su handshake. El inicio de sesión, el cierre de sesión o el cambio de usuario reconecta el socket bajo la nueva identidad. Las reducciones de acceso se aplican de forma diferida en una conexión activa: la publicación se vuelve a verificar contra RLS en cada mensaje y las nuevas suscripciones se vuelven a verificar en el momento de unirse, pero la recepción continua en canales ya unidos persiste hasta que el cliente cancela la suscripción o se reconecta.

Propiedades

Manejo de errores

Códigos de error de tiempo real comunes:

Ejemplo completo