且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

寻找服务器端GraphQL订阅侦听器的代码

更新时间:2023-11-27 22:13:34

弄清楚了:

const ws = require('ws');
const { WebSocketLink } = require("apollo-link-ws");
const { execute} = require("apollo-link");
const { SubscriptionClient } = require('subscriptions-transport-ws');
const gql = require('graphql-tag');

const serverConfig = {serverUrl:'http://localhost:4000/', subscriptionUrl:'ws://localhost:4000/graphql'};

const client = new SubscriptionClient(serverConfig.subscriptionUrl, {
    reconnect: true
}, ws);

const link = new WebSocketLink(client);

const operation = {
    query: gql`
        subscription eventAdded{
            eventAdded{
                id
                name
                payload
                createdAt
                storedAt
            }
        }`
};

// execute returns an Observable so it can be subscribed to
execute(link, operation).subscribe({
    next: data => console.log(`received data: ${JSON.stringify(data, null, 2)}`),
    error: error => console.log(`received error ${error}`),
    complete: () => console.log(`complete`),
});

console.log(`Listener running at ${new Date().toString()}`);