chore(deps-dev): apply updates
[poolifier.git] / examples / typescript / http-server-pool / fastify-cluster / src / main.ts
1 import { dirname, extname, join } from 'node:path'
2 import { fileURLToPath } from 'node:url'
3 import { availableParallelism, FixedClusterPool } from 'poolifier'
4
5 import type { WorkerData, WorkerResponse } from './types.js'
6
7 const workerFile = join(
8 dirname(fileURLToPath(import.meta.url)),
9 `worker${extname(fileURLToPath(import.meta.url))}`
10 )
11
12 const pool = new FixedClusterPool<WorkerData, WorkerResponse>(
13 availableParallelism(),
14 workerFile,
15 {
16 enableEvents: false,
17 errorHandler: (e: Error) => {
18 console.error('Cluster worker error:', e)
19 },
20 onlineHandler: () => {
21 pool
22 .execute({ port: 8080 })
23 .then(response => {
24 if (response.status) {
25 console.info(
26 `Fastify is listening in cluster worker on port ${response.port?.toString()}`
27 )
28 }
29 return undefined
30 })
31 .catch((error: unknown) => {
32 console.error('Fastify failed to start in cluster worker:', error)
33 })
34 },
35 }
36 )