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-dotan

v0.3.3

Published

A websocket transport for GraphQL subscriptions

Downloads

5

Readme

npm version GitHub license

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 to
  • options?: Object : optional object to modify default client behavior
    • timeout: 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 the SUBSCRIPTION_START message and will be available in the server side on onSubscribe

Methods

subscribe(options, handler) => id

  • options: {SubscriptionOptions}
    • query: string : GraphQL subscription
    • variables: Object : GraphQL subscription variables
    • operationName: 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 manager
    • onSubscribe?: (message: SubscribeMessage, params: SubscriptionOptions, webSocketRequest: WebSocketRequest, headers: HeadersObject) : optional method to create custom params that will be used when resolving this subscription
    • keepAlive?: number : optional interval in ms to send SUBSCRIPTION_KEEPALIVE messages 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 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

SUBSCRIPTION_KEEPALIVE

Server message sent periodically to keep the client connection alive.