feat: smtp client pool example
[poolifier.git] / examples / typescript / http-client-pool / src / main.ts
CommitLineData
49ac634f 1import { availableParallelism } from 'poolifier'
b2b02b3d 2import { httpClientPool } from './pool.js'
49ac634f
JB
3import { type WorkerResponse } from './types.js'
4
c97a785f 5const parallelism = availableParallelism() * 2
49ac634f
JB
6const requestUrl = 'http://localhost:8080/'
7
7e80208e 8for (const workerFunction of ['node_fetch', 'fetch', 'axios']) {
b2b02b3d 9 const httpClientPoolPromises = new Set<Promise<WorkerResponse>>()
c97a785f 10 for (let i = 0; i < parallelism; i++) {
b2b02b3d
JB
11 httpClientPoolPromises.add(
12 httpClientPool.execute({ input: requestUrl }, workerFunction)
49ac634f
JB
13 )
14 }
15 try {
16 const now = performance.now()
b2b02b3d 17 const responses = await Promise.all(httpClientPoolPromises)
49ac634f
JB
18 const elapsedTime = performance.now() - now
19 console.info(
20 `Received in ${elapsedTime.toFixed(2)}ms an array with ${
21 responses.length
9aef1431 22 } responses from ${parallelism} parallel requests made with HTTP client pool task function ${workerFunction} on ${requestUrl}:\n`,
49ac634f
JB
23 responses
24 )
25 } catch (error) {
26 console.error(error)
27 }
28}