X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Ftypescript%2Fwebsocket-server-pool%2Fws-hybrid%2Fsrc%2Fwebsocket-server-worker.ts;h=6aa993d29ebd9d725cfed426535107061dad46e5;hb=3a5027122ca6401ae1d755843b20f714c61e3240;hp=ec6a3d18736f119cb27f5e32988fe464f5d2d3d4;hpb=fef029a52aacd3063ba882834ce58527600009ca;p=poolifier.git diff --git a/examples/typescript/websocket-server-pool/ws-hybrid/src/websocket-server-worker.ts b/examples/typescript/websocket-server-pool/ws-hybrid/src/websocket-server-worker.ts index ec6a3d18..6aa993d2 100644 --- a/examples/typescript/websocket-server-pool/ws-hybrid/src/websocket-server-worker.ts +++ b/examples/typescript/websocket-server-pool/ws-hybrid/src/websocket-server-worker.ts @@ -1,9 +1,10 @@ import { + availableParallelism, ClusterWorker, DynamicThreadPool, - availableParallelism } from 'poolifier' import { type RawData, WebSocketServer } from 'ws' + import { type ClusterWorkerData, type ClusterWorkerResponse, @@ -11,7 +12,7 @@ import { type MessagePayload, MessageType, type ThreadWorkerData, - type ThreadWorkerResponse + type ThreadWorkerResponse, } from './types.js' const emptyFunction = (): void => { @@ -19,24 +20,25 @@ const emptyFunction = (): void => { } class WebSocketServerWorker extends ClusterWorker< -ClusterWorkerData, -ClusterWorkerResponse + ClusterWorkerData, + ClusterWorkerResponse > { private static wss: WebSocketServer private static requestHandlerPool: DynamicThreadPool< - ThreadWorkerData, - ThreadWorkerResponse + ThreadWorkerData, + ThreadWorkerResponse > private static readonly startWebSocketServer = ( workerData?: ClusterWorkerData ): ClusterWorkerResponse => { const { port, workerFile, minWorkers, maxWorkers, ...poolOptions } = - workerData as ClusterWorkerData + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + workerData! WebSocketServerWorker.requestHandlerPool = new DynamicThreadPool< - ThreadWorkerData, - ThreadWorkerResponse + ThreadWorkerData, + ThreadWorkerResponse >( minWorkers ?? 1, maxWorkers ?? availableParallelism(), @@ -54,7 +56,6 @@ ClusterWorkerResponse ws.on('error', console.error) ws.on('message', (message: RawData) => { const { type, data } = JSON.parse( - // eslint-disable-next-line @typescript-eslint/no-base-to-string message.toString() ) as MessagePayload switch (type) { @@ -65,10 +66,10 @@ ClusterWorkerResponse ws.send( JSON.stringify({ type: MessageType.echo, - data: response.data + data: response.data, }) ) - return null + return undefined }) .catch(emptyFunction) break @@ -77,12 +78,15 @@ ClusterWorkerResponse .execute({ data }, 'factorial') .then(response => { ws.send( - JSON.stringify({ - type: MessageType.factorial, - data: response.data - }) + JSON.stringify( + { + type: MessageType.factorial, + data: response.data, + }, + (_, v) => (typeof v === 'bigint' ? v.toString() : v) + ) ) - return null + return undefined }) .catch(emptyFunction) break @@ -91,7 +95,7 @@ ClusterWorkerResponse }) return { status: true, - port: WebSocketServerWorker.wss.options.port + port: WebSocketServerWorker.wss.options.port, } } @@ -100,7 +104,7 @@ ClusterWorkerResponse killHandler: async () => { await WebSocketServerWorker.requestHandlerPool.destroy() WebSocketServerWorker.wss.close() - } + }, }) } }