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=56fad6d1b9edec47d79dd4e283dfe638e9507dfd;hpb=85d2a65ad4435211edf06c035f87425594044bd2;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 56fad6d1..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,42 +1,45 @@ -import type { Server } from 'http' -import type { AddressInfo } from 'net' +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 => { - /** Intentional */ + /* Intentional */ } 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(), @@ -52,7 +55,7 @@ ClusterWorkerResponse application.all('/api/echo', (req: Request, res: Response) => { ExpressWorker.requestHandlerPool .execute({ data: req.body }, 'echo') - .then((response) => { + .then(response => { return res.send(response.data).end() }) .catch(emptyFunction) @@ -61,24 +64,23 @@ ClusterWorkerResponse application.get('/api/factorial/:number', (req: Request, res: Response) => { const { number } = req.params ExpressWorker.requestHandlerPool - .execute({ data: { number: parseInt(number) } }, 'factorial') - .then((response) => { + .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:${workerData?.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 ?? - workerData?.port + port: listenerPort ?? port, } } @@ -87,7 +89,7 @@ ClusterWorkerResponse killHandler: async () => { await ExpressWorker.requestHandlerPool.destroy() ExpressWorker.server.close() - } + }, }) } }