Connessione alle AppSync Subscriptions
Questa guida mostra come connettersi all’endpoint websocket Legalesign AppSync e iniziare a consumare le subscription GraphQL.
Usa questa pagina per la configurazione della connessione.
Usa queste pagine per la gestione del payload:
Prima di Iniziare
Ti servono:
- un token di accesso valido
- l’endpoint GraphQL Legalesign
- un client GraphQL con supporto websocket
Ottieni prima un token di accesso:
Endpoint
Endpoint GraphQL HTTP:
https://graphql.uk.legalesign.com/graphql
Endpoint websocket:
wss://graphql.uk.legalesign.com/graphql
Autenticazione
Passa il token di accesso quando apri la connessione websocket.
Parametri tipici di connessione:
{
"Authorization": "Bearer <access-token>"
}
Operazioni di Subscription
Feed Utente
subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}
Feed Gruppo
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
Esempio in JavaScript
Questo esempio 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();
Decodificare il Payload Interno
Il campo della subscription restituisce un wrapper più una stringa JSON in data.
Decodifica il payload interno prima di instradare su category o event:
const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};
Esempio:
next: ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);
console.log(event.category, event.event, event.data);
}
Riconnessione e Aggiornamento Token
I client in produzione dovrebbero:
- riconnettersi automaticamente se la websocket cade
- aggiornare i token di accesso scaduti
- riaprire le subscription dopo la riconnessione
Se le subscription smettono di ricevere aggiornamenti dopo una sessione lunga, la prima cosa da controllare è la scadenza del token.