import { createServer } from "node:http"; import { FastifyServerFactory, FastifyServerFactoryHandler, RawServerDefault } from "fastify"; import wisp from "wisp-server-node"; import { LOG_LEVEL, WispOptions } from "wisp-server-node/dist/Types.js"; import { parsedDoc } from "./config.js"; const wispOptions: WispOptions = { logLevel: parsedDoc.server.server.logging ? LOG_LEVEL.DEBUG : LOG_LEVEL.NONE, pingInterval: 30 }; const serverFactory: FastifyServerFactory = ( handler: FastifyServerFactoryHandler ): RawServerDefault => { const httpServer = createServer(); httpServer.on("request", (req, res) => { handler(req, res); }); httpServer.on("upgrade", (req, socket, head) => { if (parsedDoc.server.server.wisp) { if (req.url?.endsWith("/wisp/")) { wisp.routeRequest(req, socket as any, head, wispOptions); } } }); return httpServer; }; export { serverFactory };