subscriptions-transport-ws-async
TypeScript icon, indicating that this package has built-in type declarations

0.2.11 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i subscriptions-transport-ws-async

Weekly Downloads

11

Version

0.2.11

License

MIT

Last publish

Collaborators

  • rricard