Spaces:
Sleeping
Sleeping
File size: 1,044 Bytes
423c2fb 8ac85ba 423c2fb 4a98d55 423c2fb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import { createServer } from "http";
import app, { bares, wispHandler } from "./app";
import { logger } from "./lib/logger";
const rawPort = process.env["PORT"] ?? "3000";
const port = Number(rawPort);
if (Number.isNaN(port) || port <= 0) throw new Error(`Invalid PORT: "${rawPort}"`);
const server = createServer((req, res) => {
for (const bare of bares) {
if (bare.shouldRoute(req)) { bare.routeRequest(req, res); return; }
}
app(req, res);
});
server.on("upgrade", (req, socket, head) => {
const url = req.url ?? "";
// Wisp protocol (optional — needs wisp-server-node installed)
if (url.startsWith("/api/wisp") && wispHandler) {
wispHandler(req, socket, head);
return;
}
// Bare servers
for (const bare of bares) {
if (bare.shouldRoute(req)) { bare.routeUpgrade(req, socket, head); return; }
}
socket.end();
});
server.listen(port, '0.0.0.0', (err?: Error) => {
if (err) { logger.error({ err }, "Error listening on port"); process.exit(1); }
logger.info({ port }, "Server listening");
});
|