JSPM

  • Created
  • Published
  • Downloads 1862825
  • Score
    100M100P100Q62113F
  • License MIT

A websocket transport for GraphQL subscriptions

Package Exports

  • subscriptions-transport-ws
  • subscriptions-transport-ws/dist/client

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (subscriptions-transport-ws) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

test-websocket-server

(Work in progress!) A GraphQL websocket server to facilitate GraphQL subscriptions. See the websocket-integration branch on GitHunt for example code.

Client

Constructor

  • url: string : url that the client will connect to

Methods

subscribe(options, handler)

  • options: {SubscriptionOptions}
    • query: string : GraphQL subscription
    • variables: Object : GraphQL subscription variables
    • operationName: string : operation name of the subscription
  • handler: (error: Object, data: Object) => void : function to handle any errors and results from the subscription response

unsubscribe(id)

  • id: string : the subscription ID of the subscription to unsubscribe from

Server

Constructor

  • options: {ServerOptions}
    • schema: GraphQLSchema : the schema for the data
    • triggerGenerator: (name: string, args: Object, context?: Object) => Array<{name: string, filter: Function}> : function which, given the name ofa subscription, its arguments, and its operation name, will return a list of actions that trigger it, stored by name and a filter function
    • contextValue?: any : contextValue to be passed into graphql
    • rootValue?: any : rootValue to be passed into graphql
    • formatResponse?: (GraphQLResult) => Object : function to format GraphQL response before sending it to client
    • validationRules?: Array<any> : array of addition rules to run when validating GraphQL subscription

Methods

triggerAction(triggerObject)

  • triggerObject : object with information on an action
    • name: string : name of the action
    • rootValue: any : rootValue to be passed into the GraphQL call of any subscription that is called as a result of the action
    • contextValue?: any : contextValue to be passed into the GraphQL call of any subscription that is called as a result of the action

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 subscription
  • variables: Object : GraphQL subscription variables
  • operationName: string : operation name of the subscription
  • id: 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 server
  • id: 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 subscription
  • id: string : subscription ID