diff --git a/packages/cli/src/lib/platform/common.ts b/packages/cli/src/lib/platform/common.ts index 2f58017de..34cce3aba 100644 --- a/packages/cli/src/lib/platform/common.ts +++ b/packages/cli/src/lib/platform/common.ts @@ -1,9 +1,11 @@ import { MiddlewareClient } from "@scramjet/middleware-api-client"; import { sessionConfig, profileManager, ProfileConfig } from "../config"; import { displayError, displayMessage } from "../output"; -import { ClientUtils } from "@scramjet/client-utils"; +import { ClientUtils, ClientUtilsCustomAgent } from "@scramjet/client-utils"; import { configEnv, isProductionEnv } from "../../types"; import { Command } from "commander"; +import http from "http"; +import https from "https"; /** * Returns host client for host pointed by command options. @@ -17,7 +19,11 @@ export const getMiddlewareClient = (): MiddlewareClient => { throw new Error("Middleware API URL is not specified"); } - const middlewareClient = new MiddlewareClient(middlewareApiUrl); + const agent = middlewareApiUrl.startsWith("https") ? https.Agent : http.Agent; + const middlewareClient = new MiddlewareClient( + middlewareApiUrl, + new ClientUtilsCustomAgent(middlewareApiUrl, new agent({ keepAlive: true })) + ); if (debug) { middlewareClient.client.addLogger({ diff --git a/packages/client-utils/src/client-utils.ts b/packages/client-utils/src/client-utils.ts index 5a1159e15..858b08f65 100644 --- a/packages/client-utils/src/client-utils.ts +++ b/packages/client-utils/src/client-utils.ts @@ -54,7 +54,7 @@ export abstract class ClientUtilsBase implements HttpClient { const fetchInit: RequestInit & { agent?: HTTPAgent } = { signal: abortController.signal, ...init }; fetchInit.headers = { ...ClientUtilsBase.headers, ...fetchInit.headers }; - fetchInit.agent ||= new HTTPAgent(); + fetchInit.agent ||= this.agent; options.throwOnErrorHttpCode ??= true; diff --git a/packages/client-utils/src/index.ts b/packages/client-utils/src/index.ts index bbac37c9d..1de759ff9 100644 --- a/packages/client-utils/src/index.ts +++ b/packages/client-utils/src/index.ts @@ -38,7 +38,7 @@ export class ClientUtils extends ClientUtilsBase implements HttpClient { export class ClientUtilsCustomAgent extends ClientUtilsBase implements HttpClient { constructor( apiBase: string, - agent: http.Agent + agent: http.Agent | https.Agent ) { super( apiBase, @@ -50,7 +50,7 @@ export class ClientUtilsCustomAgent extends ClientUtilsBase implements HttpClien }, normalizeUrl ); - + this.agent = agent; } } diff --git a/packages/middleware-api-client/src/middleware-client.ts b/packages/middleware-api-client/src/middleware-client.ts index f1afc42da..c78fd02dd 100644 --- a/packages/middleware-api-client/src/middleware-client.ts +++ b/packages/middleware-api-client/src/middleware-client.ts @@ -1,5 +1,5 @@ /* eslint-disable no-console */ -import { ClientProvider, ClientUtils } from "@scramjet/client-utils"; +import { ClientProvider, ClientUtils, ClientUtilsCustomAgent } from "@scramjet/client-utils"; import { ManagerClient } from "@scramjet/api-client"; import { MWRestAPI, MMRestAPI } from "@scramjet/types"; @@ -25,7 +25,10 @@ export class MiddlewareClient implements ClientProvider { * @returns {ManagerClient} ManagerClient for space management */ getManagerClient(id: string, mutliManagerApiBase = "/api/v1"): ManagerClient { - return new ManagerClient(`${this.apiBase}/space/${id}${mutliManagerApiBase}`); + return new ManagerClient( + `${this.apiBase}/space/${id}${mutliManagerApiBase}`, + new ClientUtilsCustomAgent(`${this.apiBase}/space/${id}${mutliManagerApiBase}`, this.client.agent) + ); } /**