UNPKG

@appello/services

Version:

Services package with api / graphql

40 lines (39 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSocketLink = void 0; const client_1 = require("@apollo/client"); const subscriptions_1 = require("@apollo/client/link/subscriptions"); const common_1 = require("@appello/common"); const graphql_ws_1 = require("graphql-ws"); const utils_1 = require("../utils"); const baseCreateLink_1 = require("./baseCreateLink"); exports.createSocketLink = (0, baseCreateLink_1.baseCreateLink)(config => { if (!config.wsUrl) return new client_1.ApolloLink(); return new subscriptions_1.GraphQLWsLink((0, graphql_ws_1.createClient)(Object.assign({ url: config.wsUrl, retryAttempts: 5, keepAlive: 10000, connectionAckWaitTimeout: 2000, lazy: true, retryWait: async (retryAttempts) => { if (retryAttempts >= 4) { console.debug(`socket:DISCONNECTED ${new Date()}`); } await (0, common_1.sleep)(5000); }, shouldRetry: errOrCloseEvent => { console.debug('socket:CLOSED', errOrCloseEvent); return true; }, connectionParams: async () => { var _a; const accessToken = await ((_a = config.getAccessToken) === null || _a === void 0 ? void 0 : _a.call(config)); return (0, utils_1.getAuthorizationHeader)(accessToken || ''); }, on: { connecting: () => { console.log(`socket:CONNECTING ${new Date()}`); }, connected: () => { console.log(`socket:CONNECTED ${new Date()}`); }, error: errors => { console.error(`socket:ERROR: ${JSON.stringify(errors)}`); }, closed: reason => { console.log(`socket:CLOSED ${new Date()} | ${reason}`); }, } }, config.wsLnkParams))); });