- Babel (ES6, babel-preset-env)
- ESLint
- Flowtype
- express
- apollo-server-express
- graphql
- graphql-compose
- graphql-subscriptions
- subscriptions-transport-ws
- nodemon
git clone https://github.com/graphql-compose/graphql-compose-subscription-boilerplate
cd graphql-compose-subscription-boilerplate
# make it to your own
rm -rf .git
yarn install
# start server with reloading on file changes
yarn dev
# OR start server
yarn start
- Describe your subscription like below
schemaComposer.Subscription.addFields({
updatePost: {
type: 'Post',
resolve: payload => {
return payload.updatePost;
},
subscribe: () => pubsub.asyncIterator('updatePost'),
},
});
As you noticed, PubSub library is used that will help you.
- In your mutation, specify the data that you want to subscribe to.
...
pubsub.publish('updatePost', { updatePost: post });
...
Now, when a mutation invokes, Subscription will watch and report changes in the data.
- Customize server part like in boilerplate.
Pay attention, in comparison with the usual server for GraphQL, there is
SubscriptionServer
andsubscriptionsEndpoint
.