Conectar a las Suscripciones de AppSync
Esta guía muestra cómo conectarse al endpoint websocket de Legalesign AppSync y comenzar a consumir suscripciones GraphQL.
Usa esta página para la configuración de la conexión.
Usa estas páginas para el manejo de la carga útil:
Antes de Comenzar
Necesitas:
- un token de acceso válido
- el endpoint GraphQL de Legalesign
- un cliente GraphQL con capacidad websocket
Obtén un token de acceso primero:
Endpoints
Endpoint GraphQL HTTP:
https://graphql.uk.legalesign.com/graphql
Endpoint websocket:
wss://graphql.uk.legalesign.com/graphql
Autenticación
Pasa tu token de acceso al abrir la conexión websocket.
Parámetros típicos de conexión:
{
"Authorization": "Bearer <access-token>"
}
Operaciones de Suscripción
Feed de Usuario
subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}
Feed de Grupo
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
Ejemplo en JavaScript
Este ejemplo usa graphql-ws:
import { createClient } from 'graphql-ws';
import WebSocket from 'ws';
const accessToken = '<access-token>';
const client = createClient({
url: 'wss://graphql.uk.legalesign.com/graphql',
webSocketImpl: WebSocket,
connectionParams: {
Authorization: `Bearer ${accessToken}`,
},
});
const unsubscribeUser = client.subscribe(
{
query: `
subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}
`,
},
{
next: ({ data }) => {
console.log('user feed message', data);
},
error: (err) => {
console.error('user feed error', err);
},
complete: () => {
console.log('user feed closed');
},
}
);
const unsubscribeGroup = client.subscribe(
{
query: `
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
`,
variables: {
groupId: '<your-group-id>',
},
},
{
next: ({ data }) => {
console.log('group feed message', data);
},
error: (err) => {
console.error('group feed error', err);
},
complete: () => {
console.log('group feed closed');
},
}
);
// Later:
// unsubscribeUser();
// unsubscribeGroup();
Parsear la Carga Útil Interna
El campo de suscripción devuelve un envoltorio más una cadena JSON en data.
Parsea la carga útil interna antes de enrutar según category o event:
const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};
Ejemplo:
next: ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);
console.log(event.category, event.event, event.data);
}
Reconexión y Actualización de Token
Los clientes en producción deberían:
- reconectar automáticamente si la conexión websocket se cae
- refrescar tokens de acceso expirados
- reabrir suscripciones después de reconectar
Si las suscripciones dejan de recibir actualizaciones después de una sesión de larga duración, lo primero a revisar es la expiración del token.