createSubscriptions(server) { _subscriptionsTransportWs.SubscriptionServer.create({ execute: _graphql.execute, subscribe: _graphql.subscribe, onOperation: async (_message, params, webSocket) => Object.assign({}, params, await this._getGraphQLOptions(webSocket.upgradeReq)) }, { server, path: this.config.subscriptionsPath || (0, _requiredParameter.default)('You must provide a config.subscriptionsPath to createSubscriptions!') }); }
this.setState( { headersText: e.target.value, headersTextValid: isValidJSON(e.target.value), }, () => { if (this.state.headersTextValid && this.state.saveHeadersText) { this._storage.set(STORAGE_KEYS.HEADERS_TEXT, this.state.headersText); } if (this.state.headersTextValid && this.subscriptionsClient) { // Reconnect to websocket with new headers this.subscriptionsClient.close(false, true); } }, )
/** * Create a subscription server based on an exisiting express.js server */ const createSubscriptionsServer = (server: any, path: string) => { // Start subscriptions server return SubscriptionServer.create( { execute, subscribe, schema, keepAlive: 10000, }, { server, path, } ); }
const unlisten1 = this.subscriptionsClient.on('connected', () => { this.setState({ socketStatus: 'connected', error: null }); }); const unlisten2 = this.subscriptionsClient.on('disconnected', () => { this.setState({ socketStatus: 'disconnected' }); }); const unlisten3 = this.subscriptionsClient.on('connecting', () => { this.setState({ socketStatus: 'connecting' }); }); const unlisten4 = this.subscriptionsClient.on('reconnected', () => { this.setState({ socketStatus: 'reconnected', error: null }); setTimeout(() => { }, 5000); }); const unlisten5 = this.subscriptionsClient.on('reconnecting', () => { this.setState({ socketStatus: 'reconnecting' }); }); const unlisten6 = this.subscriptionsClient.on('error', error => {
}); SubscriptionServer.create( Object.assign(params.context, context); ...hookedParams, query: typeof hookedParams.query !== 'string' ? hookedParams.query : parse(hookedParams.query), }; req, res, variables: params.variables, operationName: params.operationName, meta, }); if (moreValidationRules.length) { const validationErrors: ReadonlyArray<GraphQLError> = validate( params.schema, finalParams.query, moreValidationRules,
context: async ({ req, connection }) => { if (connection) { return connection.context; onDisconnect: async (webSocket, context) => { const c = await context.initPromise; if (c && c.authUser) {
closePubsub() { if (this.link) { const subscriptionClient = this.link[ 'subscriptionClient' ] as SubscriptionClient; subscriptionClient.unsubscribeAll(); subscriptionClient.close(); } }
function _default(options) { var endpointURL = options.endpointURL, subscriptionsPath = options.subscriptionsPath; var uri = endpointURL.replace('http', 'ws') + subscriptionsPath; var client = new _subscriptionsTransportWs.SubscriptionClient(uri, { reconnect: true, connectionParams: getConnectionParams }); options.wsClient = client; return client; }
/** * Relay subscriptiton * @param {Object} operation * @param {Object} variables * @param {Object} cacheConfig */ subscribe(operation, variables /*, cacheConfig */) { this.subConnect(); const { text: query, name: operationName } = operation; return Observable.from( this.subClient.request({ operationName, query, variables }) ); }
/** * Disconnect subsctiption socket */ subDisconnect() { if (this.subClient) { this.subClient.unsubscribeAll(); this.subClient.close(); this.subClient = null; } }
const activate = (pipelineServer) => { const subServer = SubscriptionServer.create( { schema, execute, subscribe, }, { server: pipelineServer.listener, path: '/subscriptions', } ); return subServer; }
this.setState( { headersText: e.target.value, headersTextValid: isValidJSON(e.target.value), }, () => { if (this.state.headersTextValid && this.state.saveHeadersText) { this._storage.set(STORAGE_KEYS.HEADERS_TEXT, this.state.headersText); } if (this.state.headersTextValid && this.subscriptionsClient) { // Reconnect to websocket with new headers this.subscriptionsClient.close(false, true); } }, )
const unlisten1 = this.subscriptionsClient.on('connected', () => { this.setState({ socketStatus: 'connected', error: null }); }); const unlisten2 = this.subscriptionsClient.on('disconnected', () => { this.setState({ socketStatus: 'disconnected' }); }); const unlisten3 = this.subscriptionsClient.on('connecting', () => { this.setState({ socketStatus: 'connecting' }); }); const unlisten4 = this.subscriptionsClient.on('reconnected', () => { this.setState({ socketStatus: 'reconnected', error: null }); setTimeout(() => { }, 5000); }); const unlisten5 = this.subscriptionsClient.on('reconnecting', () => { this.setState({ socketStatus: 'reconnecting' }); }); const unlisten6 = this.subscriptionsClient.on('error', error => {
context: async ({ req, connection }) => { if (connection) { return connection.context; onDisconnect: async (webSocket, context) => { const c = await context.initPromise; if (c && c.authUser) {
closePubsub() { if (this.link) { const subscriptionClient = this.link[ 'subscriptionClient' ] as SubscriptionClient; subscriptionClient.unsubscribeAll(); subscriptionClient.close(); } }