headplane/server/entry.ts
2025-01-17 08:33:22 +00:00

46 lines
1.1 KiB
TypeScript

import { createServer } from 'node:http';
import { listener } from '~server/listener';
import { initWebsocket } from '~server/ws';
import { access, constants } from 'node:fs/promises';
import log from '~server/log';
log.info('SRVX', 'Running Node.js %s', process.versions.node);
try {
await access('./node_modules/react-router', constants.F_OK | constants.R_OK);
log.info('SRVX', 'Found dependencies');
} catch (error) {
log.error('SRVX', 'No dependencies found. Please run `npm install`');
console.error(error);
process.exit(1);
}
const server = createServer(listener);
const port = process.env.PORT || 3000;
const host = process.env.HOST || '0.0.0.0';
const ws = initWebsocket();
if (ws) {
server.on('upgrade', (req, socket, head) => {
ws.handleUpgrade(req, socket, head, (ws) => {
ws.emit('connection', ws, req);
});
});
}
server.listen(port, host, () => {
log.info('SRVX', 'Running on %s:%s', host, port);
});
if (import.meta.hot) {
import.meta.hot.on('vite:beforeFullReload', () => {
server.close();
});
import.meta.hot.dispose(() => {
server.close();
});
}
// export const app = listener;