Vai al contenuto principale

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.

Correlati