https://github.com/kesne/subscriptions-transport-uws
🔃 A WebSocket client + server for GraphQL subscriptions (based on µWS)
https://github.com/kesne/subscriptions-transport-uws
graphql-subscriptions subscriptions-transport-uws
Last synced: 6 months ago
JSON representation
🔃 A WebSocket client + server for GraphQL subscriptions (based on µWS)
- Host: GitHub
- URL: https://github.com/kesne/subscriptions-transport-uws
- Owner: kesne
- License: mit
- Created: 2016-12-01T22:47:01.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-31T23:32:46.000Z (over 8 years ago)
- Last Synced: 2025-04-30T03:44:08.058Z (6 months ago)
- Topics: graphql-subscriptions, subscriptions-transport-uws
- Language: JavaScript
- Size: 13.7 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# subscriptions-transport-uws
A GraphQL websocket server and client to facilitate GraphQL subscriptions. Based on [subscriptions-transport-ws](https://github.com/apollostack/subscriptions-transport-ws), built on [µWS](https://github.com/uWebSockets/uWebSockets).
## Importing
Importing the client and the server modules are done separately from the `lib/` directory.
```js
import Client from 'subscriptions-transport-uws/lib/Client';
import Server from 'subscriptions-transport-uws/lib/Server';
```
Importing the main module is not supported and will throw an error.
## 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)
### 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)` : 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` : 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.