ws-graphql
v0.1.21
Published
A simple way of handling graphql subscriptions over websockets.
Downloads
26
Readme
test-websocket-server
(Work in progress!) A GraphQL websocket server to facilitate GraphQL subscriptions (see Kadira's blog post for more info).
The Goal
Clients should be able to subscribe to certain queries. For each subscription, the server should send a result for a query subscription every client-specified polling interval. Possible applications include getting information about new comments or deleted comments.
How is this different from a live query system (Meteor's)?
A GraphQL subscription system allows developers to specify exactly which data they want to look out for and how to handle that data. Meteor's live query system watches for all changes - this is hard to scale, because it gets more expensive as the number of possible data mutations grows.
Client-server messages
Each message has a type, as well as associated fields depending on the message type.
Client -> Server
'subscription_start'
Client sends this message to start a subscription for a query.
query
GraphQL query string
variables
GraphQL query variables
id
Client-generated subscription id
'subscription_end'
Client sends this message to end a subscription.
subscription_id
The id of the subscription that will be terminated.
Server -> Client
'subscription_fail'
Server sends this message upon failing to register a subscription, in response to client subscription_start message.
errors
Array of errors
id
ID of subscription that failed to be registered on the server.
'subscription_data'
GraphQL result sent periodically from server to client according to subscription.
result
GraphQL result
id
Subscription id