Вы ознакомились с руководством по AppSync для "Построения клиентского приложения JavaScript": https://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-javascript.html
С AWSAppSyncClient настроить подписку легко. Он использует веб-сокеты автоматически при настройке подписок.
Я даже не знал об apollo-link-ws и подобных сложностях при использовании подписок AppSync с Apollo. У меня есть только опыт подписок AppSync с клиентом React, но простое использование JavaScript кажется сравнительно простым.
Из примера в руководстве:
const client = new AWSAppSyncClient({
url: url,
region: region,
auth: {
type: type,
credentials: credentials,
}
});
client.hydrated().then(function (client) {
//Now subscribe to results
const observable = client.subscribe({ query: subquery });
const realtimeResults = function realtimeResults(data) {
console.log('realtime data: ', data);
};
observable.subscribe({
next: realtimeResults,
complete: console.log,
error: console.log,
});
});
// Set up a subscription query
const subquery = gql(`
subscription NewPostSub {
newPost {
__typename
id
title
author
version
}
}`);
Для использования Node.js в руководстве также показано, как настроить global.WebSocket и такие зависимости в примере кода.