X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Ftypescript%2Fhttp-server-pool%2Fexpress-hybrid%2Fsrc%2Fexpress-worker.ts;h=2089b3ef928d95837fafdeaf106dcd33a4bde05c;hb=862503b9f2480d51bf3a666fc4d1d2a9b3c06b33;hp=c7ca23adee4a4c2c48ec5a06f9792f93d45438fe;hpb=a449b5852f851c943360152c6acba7033ea48c23;p=poolifier.git diff --git a/examples/typescript/http-server-pool/express-hybrid/src/express-worker.ts b/examples/typescript/http-server-pool/express-hybrid/src/express-worker.ts index c7ca23ad..2089b3ef 100644 --- a/examples/typescript/http-server-pool/express-hybrid/src/express-worker.ts +++ b/examples/typescript/http-server-pool/express-hybrid/src/express-worker.ts @@ -1,17 +1,19 @@ import type { Server } from 'node:http' import type { AddressInfo } from 'node:net' + +import express, { type Express, type Request, type Response } from 'express' import { + availableParallelism, ClusterWorker, DynamicThreadPool, - availableParallelism } from 'poolifier' -import express, { type Express, type Request, type Response } from 'express' -import { - type ClusterWorkerData, - type ClusterWorkerResponse, - type DataPayload, - type ThreadWorkerData, - type ThreadWorkerResponse + +import type { + ClusterWorkerData, + ClusterWorkerResponse, + DataPayload, + ThreadWorkerData, + ThreadWorkerResponse, } from './types.js' const emptyFunction = (): void => { @@ -19,24 +21,25 @@ const emptyFunction = (): void => { } class ExpressWorker extends ClusterWorker< -ClusterWorkerData, -ClusterWorkerResponse + ClusterWorkerData, + ClusterWorkerResponse > { private static server: Server private static requestHandlerPool: DynamicThreadPool< - ThreadWorkerData, - ThreadWorkerResponse + ThreadWorkerData, + ThreadWorkerResponse > private static readonly startExpress = ( workerData?: ClusterWorkerData ): ClusterWorkerResponse => { const { port, workerFile, minWorkers, maxWorkers, ...poolOptions } = - workerData as ClusterWorkerData + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + workerData! ExpressWorker.requestHandlerPool = new DynamicThreadPool< - ThreadWorkerData, - ThreadWorkerResponse + ThreadWorkerData, + ThreadWorkerResponse >( minWorkers ?? 1, maxWorkers ?? availableParallelism(), @@ -61,22 +64,23 @@ ClusterWorkerResponse application.get('/api/factorial/:number', (req: Request, res: Response) => { const { number } = req.params ExpressWorker.requestHandlerPool - .execute({ data: { number: parseInt(number) } }, 'factorial') + .execute({ data: { number: Number.parseInt(number) } }, 'factorial') .then(response => { return res.send(response.data).end() }) .catch(emptyFunction) }) + let listenerPort: number | undefined ExpressWorker.server = application.listen(port, () => { + listenerPort = (ExpressWorker.server.address() as AddressInfo).port console.info( - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - `⚡️[express server]: Express server is started in cluster worker at http://localhost:${port}/` + `⚡️[express server]: Express server is started in cluster worker at http://localhost:${listenerPort.toString()}/` ) }) return { status: true, - port: (ExpressWorker.server.address() as AddressInfo)?.port ?? port + port: listenerPort ?? port, } } @@ -85,7 +89,7 @@ ClusterWorkerResponse killHandler: async () => { await ExpressWorker.requestHandlerPool.destroy() ExpressWorker.server.close() - } + }, }) } }