subscriptions-transport-ws-dotan v0.3.3
subscriptions-transport-ws
(Work in progress!)
A GraphQL websocket server and client to facilitate GraphQL subscriptions.
See GitHunt-API and GitHunt-React for an example server and client integration.
Client
Constructor(url, options)
url: string: url that the client will connect tooptions?: Object: optional object to modify default client behaviortimeout: number: how long the client should wait in ms for a subscription to be started (default 5000 ms)connectRequestHeaders: Object: object defines the headers for the WebSocket - those will be added to theSUBSCRIPTION_STARTmessage and will be available in the server side ononSubscribe
Methods
subscribe(options, handler) => id
options: {SubscriptionOptions}query: string: GraphQL subscriptionvariables: Object: GraphQL subscription variablesoperationName: string: operation name of the subscription
handler: (errors: Error[], result?: any) => void: function to handle any errors and results from the subscription response
unsubscribe(id) => void
id: string: the subscription ID of the subscription to unsubscribe from
Server
Constructor(options, httpServer)
options: {ServerOptions}subscriptionManager: SubscriptionManager: GraphQL subscription manageronSubscribe?: (message: SubscribeMessage, params: SubscriptionOptions, webSocketRequest: WebSocketRequest, headers: HeadersObject): optional method to create custom params that will be used when resolving this subscriptionkeepAlive?: number: optional interval in ms to sendSUBSCRIPTION_KEEPALIVEmessages to all clients
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: GraphQLDocument: GraphQL subscriptionvariables: Object: GraphQL subscription variablesoperationName: string: operation name of the subscriptionid: string: subscription ID
SUBSCRIPTION_END
Client sends this message to end a subscription.
id: string: subscription ID of the subscription to be terminated
Server -> Client
SUBSCRIPTION_SUCCESS
The server sends this message to confirm that it has validated the subscription query and is subscribed to the triggers.
id: string: ID of the subscription that was successfully set up
SUBSCRIPTION_FAIL
Server sends this message upon failing to register a subscription. It may also send this message at any point during the subscription to notify the client the the subscription has been stopped.
errors: Array<Object>: array of errors attributed to the subscription failing on the serverid: string: subscription ID of the subscription that failed on the server
SUBSCRIPTION_DATA
GraphQL result sent periodically from server to client according to subscription.
payload: GraphQLResult: GraphQL result from running the subscriptionid: string: subscription ID
SUBSCRIPTION_KEEPALIVE
Server message sent periodically to keep the client connection alive.