3.3.0 • Published 5 years ago
onegraph-subscription-client v3.3.0
OneGraph Subscriptions Transport over Websockets
This library is a light wrapper over subscriptions-transport-ws that provides the required configuration to use subscriptions with OneGraph.
Installation
With yarn:
yarn add onegraph-subscription-clientWith npm:
npm install --save onegraph-subscription-clientUsage
import {SubscriptionClient} from 'onegraph-subscription-client';
const ONEGRAPH_APP_ID = 'YOUR_APP_ID';
const client = new SubscriptionClient(ONEGRAPH_APP_ID);
client
.request({
query: /* GraphQL */ `
subscription NpmPackagesSubscription {
npm {
allPublishActivity {
package {
name
}
}
}
}
`,
operationName: 'NpmPackagesSubscription',
})
.subscribe(
next => {
const npmPackage = next.data.npm.allPublishActivity.package;
console.log(npmPackage);
},
error => console.error(error),
() => console.log('done'),
);With OneGraphAuth
import {SubscriptionClient} from 'onegraph-subscription-client';
import {OneGraphAuth} from 'onegraph-auth';
const ONEGRAPH_APP_ID = 'YOUR_APP_ID';
const auth = new OneGraphAuth(ONEGRAPH_APP_ID);
const client = new SubscriptionClient(ONEGRAPH_APP_ID, {oneGraphAuth: auth});With Apollo Client
import {SubscriptionClient} from 'onegraph-subscription-client';
import {ApolloClient} from 'apollo-client';
import {InMemoryCache} from 'apollo-cache-inmemory';
const ONEGRAPH_APP_ID = 'YOUR_APP_ID';
const subscriptionClient = new SubscriptionClient(ONEGRAPH_APP_ID);
const apolloClient = new ApolloClient({
link: subscriptionClient,
cache: new InMemoryCache(),
});API Docs
SubscriptionClient
Constructor(url, options, webSocketImpl)
appId: string: Your OneGraph AppIdoptions?: Object: optional, object to modify default client behavioroneGraphAuth?: OneGraphAuth: the OneGraphAuth instance that this subscription should use to authenticate requeststimeout?: number: how long the client should wait in ms for a keep-alive message from the server (default 30000 ms), this parameter is ignored if the server does not send keep-alive messages. This will also be used to calculate the max connection time per connect/reconnectlazy?: boolean: use to set lazy mode - connects only when first subscription created, and delay the socket initializationreconnect?: boolean: automatic reconnect in case of connection errorreconnectionAttempts?: number: how much reconnect attemptsconnectionCallback?: (error) => {}: optional, callback that called after the first init message, with the error (if there is one)inactivityTimeout?: number: how long the client should wait in ms, when there are no active subscriptions, before disconnecting from the server. Set to 0 to disable this behavior. (default 0)
webSocketImpl?: Object- optional, constructor for W3C compliant WebSocket implementation. Use this when your environment does not have a built-in native WebSocket (for example, with NodeJS client)
Methods
request(options) => Observable<ExecutionResult>: returns observable to execute the operation.
options: {OperationOptions}query: string: GraphQL subscriptionvariables: Object: GraphQL subscription variablesoperationName: string: operation name of the subscriptioncontext: Object: use to override context for a specific call
unsubscribeAll() => void - unsubscribes from all active subscriptions.
on(eventName, callback, thisContext) => Function
eventName: string: the name of the event, available events are:connecting,connected,reconnecting,reconnected,disconnectedanderrorcallback: Function: function to be called when websocket connects and initialized.thisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
onConnected(callback, thisContext) => Function - shorthand for .on('connected', ...)
callback: Function: function to be called when websocket connects and initialized, after ACK message returned from the serverthisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
onReconnected(callback, thisContext) => Function - shorthand for .on('reconnected', ...)
callback: Function: function to be called when websocket reconnects and initialized, after ACK message returned from the serverthisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
onConnecting(callback, thisContext) => Function - shorthand for .on('connecting', ...)
callback: Function: function to be called when websocket starts it's connectionthisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
onReconnecting(callback, thisContext) => Function - shorthand for .on('reconnecting', ...)
callback: Function: function to be called when websocket starts it's reconnectionthisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
onDisconnected(callback, thisContext) => Function - shorthand for .on('disconnected', ...)
callback: Function: function to be called when websocket disconnected.thisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
onError(callback, thisContext) => Function - shorthand for .on('error', ...)
callback: Function: function to be called when an error occurs.thisContext: any:thiscontext to use when calling the callback function.- => Returns an
offmethod to cancel the event subscription.
close() => void - closes the WebSocket connection manually, and ignores reconnect logic if it was set to true.
use(middlewares: MiddlewareInterface[]) => SubscriptionClient - adds middleware to modify OperationOptions per each request
middlewares: MiddlewareInterface[]- Array contains list of middlewares (implementedapplyMiddlewaremethod) implementation, theSubscriptionClientwill use the middlewares to modifyOperationOptionsfor every operation