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=eabf72ebb30449aaec103e485d8d1105d3bca333;hb=45560c0539e5668157f1352c984bcd2e8ded6124;hp=12c2190e750d36b77a4a8aca912c62ae37711ffa;hpb=93b097acefb8dfea7259bff4cb9f6c337d34db94;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 12c2190e..eabf72eb 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 + DynamicThreadPool } from 'poolifier' import { type RawData, WebSocketServer } from 'ws' + import { type ClusterWorkerData, type ClusterWorkerResponse, @@ -15,7 +16,7 @@ import { } from './types.js' const emptyFunction = (): void => { - /** Intentional */ + /* Intentional */ } class WebSocketServerWorker extends ClusterWorker< @@ -31,23 +32,26 @@ ClusterWorkerResponse private static readonly startWebSocketServer = ( workerData?: ClusterWorkerData ): ClusterWorkerResponse => { - const { port } = workerData as ClusterWorkerData - WebSocketServerWorker.wss = new WebSocketServer({ port }, () => { - console.info( - `⚡️[ws server]: WebSocket server is started in cluster worker at ws://localhost:${port}/` - ) - }) + const { port, workerFile, minWorkers, maxWorkers, ...poolOptions } = + workerData! WebSocketServerWorker.requestHandlerPool = new DynamicThreadPool< ThreadWorkerData, ThreadWorkerResponse >( - workerData?.minWorkers ?? 1, - workerData?.maxWorkers ?? availableParallelism(), - workerData?.workerFile as string + minWorkers ?? 1, + maxWorkers ?? availableParallelism(), + workerFile, + poolOptions ) - WebSocketServerWorker.wss.on('connection', (ws) => { + WebSocketServerWorker.wss = new WebSocketServer({ port }, () => { + console.info( + `⚡️[ws server]: WebSocket server is started in cluster worker at ws://localhost:${port}/` + ) + }) + + WebSocketServerWorker.wss.on('connection', ws => { ws.on('error', console.error) ws.on('message', (message: RawData) => { const { type, data } = JSON.parse( @@ -58,28 +62,28 @@ ClusterWorkerResponse case MessageType.echo: WebSocketServerWorker.requestHandlerPool .execute({ data }, 'echo') - .then((response) => { + .then(response => { ws.send( JSON.stringify({ type: MessageType.echo, data: response.data }) ) - return null + return undefined }) .catch(emptyFunction) break case MessageType.factorial: WebSocketServerWorker.requestHandlerPool .execute({ data }, 'factorial') - .then((response) => { + .then(response => { ws.send( JSON.stringify({ type: MessageType.factorial, data: response.data }) ) - return null + return undefined }) .catch(emptyFunction) break