X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Ftypescript%2Fhttp-server-pool%2Fexpress-hybrid%2Fsrc%2Fexpress-worker.ts;h=bde3ad4e629c97941870c97c894e7442195fc3c0;hb=30840fa9b17fc09644afd7f6704731f219fc8257;hp=a8ffbcb28fe0a5e6205b48964596d79d9520be41;hpb=d0ed34c9a6f9896c16b1b963e87217bbf75f3393;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 a8ffbcb2..bde3ad4e 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,21 +1,23 @@ -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 + DynamicThreadPool } 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< @@ -31,8 +33,8 @@ ClusterWorkerResponse private static readonly startExpress = ( workerData?: ClusterWorkerData ): ClusterWorkerResponse => { - const { port, workerFile, minWorkers, maxWorkers } = - workerData as ClusterWorkerData + const { port, workerFile, minWorkers, maxWorkers, ...poolOptions } = + workerData! ExpressWorker.requestHandlerPool = new DynamicThreadPool< ThreadWorkerData, @@ -41,7 +43,7 @@ ClusterWorkerResponse minWorkers ?? 1, maxWorkers ?? availableParallelism(), workerFile, - workerData + poolOptions ) const application: Express = express() @@ -52,7 +54,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 +63,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}/` ) }) return { status: true, - port: - (ExpressWorker.server.address() as AddressInfo)?.port ?? - workerData?.port + port: listenerPort ?? port } }