Aller au contenu principal

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.

Articles associés