Se connecter aux abonnements AppSync
Ce guide montre comment se connecter au point de terminaison websocket Legalesign AppSync et commencer à consommer des abonnements GraphQL.
Utilisez cette page pour la configuration de la connexion.
Utilisez ces pages pour la gestion des charges utiles :
Avant de commencer
Vous avez besoin de :
- un jeton d'accès valide
- le point de terminaison GraphQL Legalesign
- un client GraphQL capable de websocket
Obtenez d'abord un jeton d'accès :
Points de terminaison
Point de terminaison HTTP GraphQL :
https://graphql.uk.legalesign.com/graphql
Point de terminaison websocket :
wss://graphql.uk.legalesign.com/graphql
Authentification
Passez votre jeton d'accès lors de l'ouverture de la connexion websocket.
Paramètres typiques de connexion :
{
"Authorization": "Bearer <access-token>"
}
Opérations d'abonnement
Fil d’actualité utilisateur
subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}
Fil d’actualité groupe
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
Exemple JavaScript
Cet exemple utilise 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();
Analyser la charge utile interne
Le champ d'abonnement retourne un wrapper plus une chaîne JSON dans data.
Analysez la charge utile interne avant de router selon category ou event :
const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};
Exemple :
next: ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);
console.log(event.category, event.event, event.data);
}
Reconnexion et rafraîchissement du jeton
Les clients en production doivent :
- se reconnecter automatiquement si le websocket se coupe
- rafraîchir les jetons d'accès expirés
- rouvrir les abonnements après la reconnexion
Si les abonnements cessent de recevoir des mises à jour après une session longue, la première chose à vérifier est l’expiration du jeton.