@mercuriusjs/subscription-client
A websocket client for Mercurius subscriptions.
Quick start
npm i @mercuriusjs/subscription-client
SubscriptionClient
SubscriptionClient
: class extends EventEmitter
-
The SubscriptionClient class constructor takes two parameters:
uri
: string
The uri of the websocket server.config
: object
the configuration object.
protocols
: Array<string>
The WebSocket sub-protocol. default: graphql-transport-ws
.reconnect
: boolean
Enables the client to attempt to reconnect if the connection is interrupted. default: false
.maxReconnectAttempts
: number
The maximum amount of attempts the client should perform when reconnecting. default: Infinity
.serviceName
: string
The service name.connectionCallback
: (params: any) : Promise<void>
A callback that is executed when the client is successfully connected to the server.failedConnectionCallback
: (params: any) : Promise<void>
A callback that is executed when the client fails connecting to the server.failedReconnectCallback
: (params: any) : Promise<void>
A callback that is executed when the client fails reconnecting to the server.connectionInitPayload
: any
The connection init payload or a function that returns it.rewriteConnectionInitPayload
: (connectionInit, context) => void
A function that allows to rewrite the default connection init payload.keepAlive
: number
The milliseconds value of the connection keep-alive interval. default: false
-
subscriptionClient.connect()
: void
Creates a connection to the server.
-
subscriptionClient.close(tryReconnect, closedByUser?)
: void
Closes the connection to the server.
-
unsubscribe(operationId, forceUnsubscribe)
: void
Unsuscribes from the topic with the provided operationId
.
-
subscriptionClient.unsubscribeAll()
: void
Unsuscribes from all topics.
-
subscriptionClient.createSubscription(query, variables, publish, context)
: string
. Creates a subscription to a query. Returns the SubscriptionOperationId
SubscriptionClient
extends EventEmitter
class from node:events
, and it is possibile add listeners to the following events:
SocketOpen
Emits when the connection is open.ready
Emits when the connection_ack
is received and it is ready to communicate.SocketError
Emits when an error occurred.SocketClose
Emits when the socket is closed.
Examples:
const { SubscriptionClient } = require( "@mercuriusjs/subscription-client")
const { once } = require('events')
const client = new SubscriptionClient('ws://localhost:3000', {
protocols: ["graphql-transport-ws"],
reconnect: true,
maxReconnectAttempts: 10,
serviceName: "test-service",
connectionCallback: () => {
},
failedConnectionCallback: (err) => {
},
failedReconnectCallback: () => {
},
connectionInitPayload: 'foo',
rewriteConnectionInitPayload: (connectionInit, context) => {
},
keepAlive: 1000
});
client.connect()
await once(client, 'ready')
const operationId1 = client.createSubscription('query', {}, (data)=> {
})
client.unsubscribe(operationId1)
const operationId2 = client.createSubscription('query', {}, (data)=> {
})
client.unsuscribeAll()
client.close()