Spaces:
Paused
Paused
| import { createServer } from 'node:http'; | |
| import { Socket } from 'node:net'; | |
| import { | |
| type FastifyServerFactory, | |
| FastifyServerFactoryHandler, | |
| RawServerDefault, | |
| } from 'npm:fastify'; | |
| import wisp from 'npm:wisp-server-node'; | |
| import { parsedDoc } from './config/config.ts'; | |
| const serverFactory: FastifyServerFactory = ( | |
| handler: FastifyServerFactoryHandler, | |
| ): RawServerDefault => { | |
| return createServer() | |
| .on('request', (req, res) => { | |
| handler(req, res); | |
| }) | |
| .on('upgrade', (req, socket, head) => { | |
| if (req.url?.endsWith('/wisp/') && parsedDoc.server.wisp === true) { | |
| wisp.routeRequest(req, socket as Socket, head); | |
| } | |
| }); | |
| }; | |
| export { serverFactory }; | |