npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

subscriptions-transport-ws-async

v0.2.11

Published

A websocket transport for GraphQL subscriptions

Downloads

4

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