Skip to content

Commit 0d45073

Browse files
authored
fix(js): make http(s) agent global (#44)
1 parent 3333333 commit 0d45073

File tree

5 files changed

+30
-50
lines changed

5 files changed

+30
-50
lines changed

clients/algoliasearch-client-javascript/client-analytics/utils/requester/HttpRequester.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@ import type { EndRequest, Response } from '../types';
55

66
import { Requester } from './Requester';
77

8-
export class HttpRequester extends Requester {
9-
private httpAgent: http.Agent;
10-
private httpsAgent: https.Agent;
11-
12-
constructor() {
13-
super();
14-
this.httpAgent = new http.Agent({ keepAlive: true });
15-
this.httpsAgent = new https.Agent({ keepAlive: true });
16-
}
8+
// Global agents allow us to reuse the TCP protocol with multiple clients
9+
const agentOptions = { keepAlive: true };
10+
const httpAgent = new http.Agent(agentOptions);
11+
const httpsAgent = new https.Agent(agentOptions);
1712

13+
export class HttpRequester extends Requester {
1814
send(request: EndRequest): Promise<Response> {
1915
return new Promise((resolve) => {
2016
let responseTimeout: NodeJS.Timeout | undefined;
@@ -24,7 +20,7 @@ export class HttpRequester extends Requester {
2420
const path =
2521
url.search === null ? url.pathname : `${url.pathname}${url.search}`;
2622
const options: https.RequestOptions = {
27-
agent: url.protocol === 'https:' ? this.httpsAgent : this.httpAgent,
23+
agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
2824
hostname: url.hostname,
2925
path,
3026
method: request.method,

clients/algoliasearch-client-javascript/client-personalization/utils/requester/HttpRequester.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@ import type { EndRequest, Response } from '../types';
55

66
import { Requester } from './Requester';
77

8-
export class HttpRequester extends Requester {
9-
private httpAgent: http.Agent;
10-
private httpsAgent: https.Agent;
11-
12-
constructor() {
13-
super();
14-
this.httpAgent = new http.Agent({ keepAlive: true });
15-
this.httpsAgent = new https.Agent({ keepAlive: true });
16-
}
8+
// Global agents allow us to reuse the TCP protocol with multiple clients
9+
const agentOptions = { keepAlive: true };
10+
const httpAgent = new http.Agent(agentOptions);
11+
const httpsAgent = new https.Agent(agentOptions);
1712

13+
export class HttpRequester extends Requester {
1814
send(request: EndRequest): Promise<Response> {
1915
return new Promise((resolve) => {
2016
let responseTimeout: NodeJS.Timeout | undefined;
@@ -24,7 +20,7 @@ export class HttpRequester extends Requester {
2420
const path =
2521
url.search === null ? url.pathname : `${url.pathname}${url.search}`;
2622
const options: https.RequestOptions = {
27-
agent: url.protocol === 'https:' ? this.httpsAgent : this.httpAgent,
23+
agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
2824
hostname: url.hostname,
2925
path,
3026
method: request.method,

clients/algoliasearch-client-javascript/client-search/utils/requester/HttpRequester.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@ import type { EndRequest, Response } from '../types';
55

66
import { Requester } from './Requester';
77

8-
export class HttpRequester extends Requester {
9-
private httpAgent: http.Agent;
10-
private httpsAgent: https.Agent;
11-
12-
constructor() {
13-
super();
14-
this.httpAgent = new http.Agent({ keepAlive: true });
15-
this.httpsAgent = new https.Agent({ keepAlive: true });
16-
}
8+
// Global agents allow us to reuse the TCP protocol with multiple clients
9+
const agentOptions = { keepAlive: true };
10+
const httpAgent = new http.Agent(agentOptions);
11+
const httpsAgent = new https.Agent(agentOptions);
1712

13+
export class HttpRequester extends Requester {
1814
send(request: EndRequest): Promise<Response> {
1915
return new Promise((resolve) => {
2016
let responseTimeout: NodeJS.Timeout | undefined;
@@ -24,7 +20,7 @@ export class HttpRequester extends Requester {
2420
const path =
2521
url.search === null ? url.pathname : `${url.pathname}${url.search}`;
2622
const options: https.RequestOptions = {
27-
agent: url.protocol === 'https:' ? this.httpsAgent : this.httpAgent,
23+
agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
2824
hostname: url.hostname,
2925
path,
3026
method: request.method,

clients/algoliasearch-client-javascript/recommend/utils/requester/HttpRequester.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@ import type { EndRequest, Response } from '../types';
55

66
import { Requester } from './Requester';
77

8-
export class HttpRequester extends Requester {
9-
private httpAgent: http.Agent;
10-
private httpsAgent: https.Agent;
11-
12-
constructor() {
13-
super();
14-
this.httpAgent = new http.Agent({ keepAlive: true });
15-
this.httpsAgent = new https.Agent({ keepAlive: true });
16-
}
8+
// Global agents allow us to reuse the TCP protocol with multiple clients
9+
const agentOptions = { keepAlive: true };
10+
const httpAgent = new http.Agent(agentOptions);
11+
const httpsAgent = new https.Agent(agentOptions);
1712

13+
export class HttpRequester extends Requester {
1814
send(request: EndRequest): Promise<Response> {
1915
return new Promise((resolve) => {
2016
let responseTimeout: NodeJS.Timeout | undefined;
@@ -24,7 +20,7 @@ export class HttpRequester extends Requester {
2420
const path =
2521
url.search === null ? url.pathname : `${url.pathname}${url.search}`;
2622
const options: https.RequestOptions = {
27-
agent: url.protocol === 'https:' ? this.httpsAgent : this.httpAgent,
23+
agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
2824
hostname: url.hostname,
2925
path,
3026
method: request.method,

clients/algoliasearch-client-javascript/utils/requester/HttpRequester.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@ import type { EndRequest, Response } from '../types';
55

66
import { Requester } from './Requester';
77

8-
export class HttpRequester extends Requester {
9-
private httpAgent: http.Agent;
10-
private httpsAgent: https.Agent;
11-
12-
constructor() {
13-
super();
14-
this.httpAgent = new http.Agent({ keepAlive: true });
15-
this.httpsAgent = new https.Agent({ keepAlive: true });
16-
}
8+
// Global agents allow us to reuse the TCP protocol with multiple clients
9+
const agentOptions = { keepAlive: true };
10+
const httpAgent = new http.Agent(agentOptions);
11+
const httpsAgent = new https.Agent(agentOptions);
1712

13+
export class HttpRequester extends Requester {
1814
send(request: EndRequest): Promise<Response> {
1915
return new Promise((resolve) => {
2016
let responseTimeout: NodeJS.Timeout | undefined;
@@ -24,7 +20,7 @@ export class HttpRequester extends Requester {
2420
const path =
2521
url.search === null ? url.pathname : `${url.pathname}${url.search}`;
2622
const options: https.RequestOptions = {
27-
agent: url.protocol === 'https:' ? this.httpsAgent : this.httpAgent,
23+
agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
2824
hostname: url.hostname,
2925
path,
3026
method: request.method,

0 commit comments

Comments
 (0)