feat: add websocket server hybrid pool example
[poolifier.git] / examples / typescript / websocket-server-pool / ws-hybrid / src / request-handler-pool.ts
1 import { dirname, extname, join } from 'node:path'
2 import { fileURLToPath } from 'node:url'
3 import { DynamicThreadPool, availableParallelism } from 'poolifier'
4 import {
5 type DataPayload,
6 type ThreadWorkerData,
7 type ThreadWorkerResponse
8 } from './types.js'
9
10 const requestHandlerWorkerFile = join(
11 dirname(fileURLToPath(import.meta.url)),
12 `request-handler-worker${extname(fileURLToPath(import.meta.url))}`
13 )
14
15 export const requestHandlerPool = new DynamicThreadPool<
16 ThreadWorkerData<DataPayload>,
17 ThreadWorkerResponse<DataPayload>
18 >(1, Math.round(availableParallelism() / 2), requestHandlerWorkerFile, {
19 enableTasksQueue: true,
20 tasksQueueOptions: {
21 concurrency: 8
22 },
23 errorHandler: (e: Error) => {
24 console.error('Thread worker error:', e)
25 }
26 })