3956c8ce2a6794eb31ef5c269ffec1f620a2740e
1 import type { AddressInfo
} from
'node:net'
2 import { ClusterWorker
} from
'poolifier'
3 import Fastify from
'fastify'
4 import type { ClusterWorkerData
, ClusterWorkerResponse
} from
'./types.js'
5 import { fastifyPoolifier
} from
'./fastify-poolifier.js'
7 const startFastify
= async (
8 workerData
?: ClusterWorkerData
9 ): Promise
<ClusterWorkerResponse
> => {
10 const { port
} = workerData
as ClusterWorkerData
11 const fastify
= Fastify({
15 await fastify
.register(fastifyPoolifier
, workerData
)
17 fastify
.all('/api/echo', async request
=> {
18 return (await fastify
.execute({ body
: request
.body
}, 'echo')).body
22 Params
: { number: number }
23 }>('/api/factorial/:number', async request
=> {
24 const { number } = request
.params
25 return (await fastify
.execute({ body
: { number } }, 'factorial')).body
28 await fastify
.listen({ port
})
31 port
: (fastify
.server
.address() as AddressInfo
).port
35 class FastifyWorker
extends ClusterWorker
<
39 public constructor () {
44 export const fastifyWorker
= new FastifyWorker()