@appello/services
Version:
Services package with api / graphql
40 lines (39 loc) • 1.85 kB
JavaScript
;
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)));
});