Saltar al contenido principal

Inicio rápido de Websocket en tiempo real

Este inicio rápido reúne lo mínimo que necesitas para comenzar a recibir eventos en tiempo real de Legalesign GraphQL.

info

Si prefieres devoluciones de llamada servidor a servidor en lugar de conexiones persistentes, también están disponibles los webhooks (descritos en la sección REST API).

¿Usando un asistente de codificación con IA?

Para mejores resultados, proporciona a tu herramienta de IA estas páginas juntas:

Harás:

  • obtener un token de acceso
  • abrir una conexión websocket AppSync
  • suscribirte a un feed de usuario o grupo
  • analizar el sobre del evento
  • enrutar según category y event

Antes de comenzar

Necesitas:

  • acceso a la API habilitado para tu cuenta
  • una cuenta de usuario de Legalesign
  • un token de acceso
  • un groupId si deseas usar subscribeGroupFeed

Comienza aquí si aún no has realizado esos pasos:

Paso 1: Elige un feed

Usa:

  • subscribeUserFeed para eventos dirigidos al usuario, como progreso de carga
  • subscribeGroupFeed para eventos dirigidos al grupo, como actualizaciones de documentos, destinatarios, plantillas, tareas, créditos y ciclo de vida

Feed de usuario

subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}

Feed de usuario

subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}

Feed de grupo

wss://graphql.uk.legalesign.com/graphql

Paso 2: Conéctate al endpoint Websocket

Usa el endpoint websocket de AppSync:

import { createClient } from 'graphql-ws';

import WebSocket from 'ws';

const client = createClient({
url: 'wss://graphql.uk.legalesign.com/graphql',
webSocketImpl: WebSocket,
connectionParams: {
Authorization: `Bearer ${accessToken}`,
},
});

Pasa tu token bearer en los parámetros de conexión.

client.subscribe(
{
query: `
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
`,
variables: {
groupId: '<your-group-id>',
},
},
{
next: ({ data }) => {
console.log('raw message', data);
},
error: console.error,
complete: () => console.log('subscription closed'),
}
);

Paso 3: Suscríbete

const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};

Paso 4: Analiza la carga interior

El campo de suscripción devuelve:

  • un envoltorio de entrega (groupId o userId)
  • una cadena JSON en data

Analiza primero el campo data interno antes de hacer cualquier otra cosa:

next: ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);

console.log('event id', event?.eventId);
console.log('category', event?.category);
console.log('event', event?.event);
console.log('payload', event?.data);
}

Ejemplo: