Я искал высокий и низкий код, который позволил бы мне зарегистрироваться на подписку GraphQL на стороне сервера и читать сообщения, поступающие с внешнего сервера подписки на стороне сервера. Я могу заставить моего подписчика на стороне сервера подключиться к внешнему серверу подписки, но после подключения я получаю начальное нулевое сообщение при подключении, например
{ message: 'From Default Listener',
data: { data: { eventAdded: null } } }
после этого сообщения не будут захвачены. Помогите, пожалуйста? Вот мой код,
const ws = require('ws');
const { ApolloClient} = require('apollo-client');
const { SubscriptionClient } = require('subscriptions-transport-ws');
const { createHttpLink} = require( 'apollo-link-http');
const { InMemoryCache } = require('apollo-cache-inmemory');
const fetch = require('node-fetch');
const gql = require('graphql-tag');
const serverConfig = {
serverUrl:'http://localhost:4000/',
subscriptionUrl:'ws://localhost:4000/graphql'
};
const PORT = process.env.PORT || 4001;
let apollo;
let networkInterface;
const link = createHttpLink({ uri: serverConfig.serverUrl, fetch: fetch });
networkInterface = new SubscriptionClient(
serverConfig.subscriptionUrl, { reconnect: true }, ws);
apollo = new ApolloClient({
networkInterface ,
link: link,
cache: new InMemoryCache()
});
const client = () => apollo;
const subClient = client();
subClient.subscribe({
query: gql`
subscription eventAdded{
eventAdded{
id
name
payload
createdAt
storedAt
}
}
`,
variables: {}
}).subscribe({
next: (data) => {
console.log({message: 'From Default Listener', data});
},
error: (err)=>{
console.log(err);
done(err);
}
});
Если окажется, что я сделал что-то действительно глупое, пожалуйста, извините. Любая помощь будет по достоинству оценена.
PS: сервер подписки работает нормально, когда я подписываюсь и получаю сообщения с помощью GraphQL Playground.