Zum Hauptinhalt springen

Verbindung zu AppSync-Abonnements herstellen

Diese Anleitung zeigt, wie man eine Verbindung zum Legalesign AppSync-Websocket-Endpunkt herstellt und mit dem Konsumieren von GraphQL-Abonnements beginnt.

Verwenden Sie diese Seite für die Verbindungseinrichtung.

Verwenden Sie diese Seiten für die Handhabung der Nutzlast:

Bevor Sie beginnen

Sie benötigen:

  • ein gültiges Zugriffstoken
  • den Legalesign GraphQL-Endpunkt
  • einen websocket-fähigen GraphQL-Client

Holen Sie sich zuerst ein Zugriffstoken:

Endpunkte

HTTP GraphQL-Endpunkt:

https://graphql.uk.legalesign.com/graphql

Websocket-Endpunkt:

wss://graphql.uk.legalesign.com/graphql

Authentifizierung

Übergeben Sie Ihr Zugriffstoken beim Öffnen der Websocket-Verbindung.

Typische Verbindungsparameter:

{
"Authorization": "Bearer <access-token>"
}

Abonnement-Operationen

Benutzer-Feed

subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}

Gruppen-Feed

subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}

JavaScript-Beispiel

Dieses Beispiel verwendet 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();

Die innere Nutzlast parsen

Das Abonnementfeld gibt einen Wrapper plus eine JSON-Zeichenkette in data zurück.

Parsen Sie die innere Nutzlast, bevor Sie nach category oder event routen:

const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};

Beispiel:

next: ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);

console.log(event.category, event.event, event.data);
}

Wiederverbinden und Token-Aktualisierung

Produktivkunden sollten:

  • automatisch wiederverbinden, wenn die Websocket-Verbindung unterbrochen wird
  • abgelaufene Zugriffstoken aktualisieren
  • Abonnements nach dem Wiederverbinden erneut öffnen

Wenn Abonnements nach einer lang laufenden Sitzung keine Updates mehr erhalten, ist das erste, was überprüft werden sollte, der Token-Ablauf.

Verwandte Themen