Files
notebrook-notes/backend/src/server.ts
2024-09-03 14:50:33 +02:00

55 lines
1.4 KiB
TypeScript

import { app } from "./app";
import { createServer } from "http";
import { WebSocket, WebSocketServer } from "ws";
import { attachEvents } from "./controllers/websocket-controller";
import { logger } from "./globals";
import selfSigned from "selfsigned";
const PORT = process.env.PORT || 3000;
const server = createServer(app);
const wss = new WebSocketServer({ server });
wss.on('connection', (ws: WebSocket) => {
logger.info('Websocket client connected');
attachEvents(ws);
ws.on('message', (message: string) => {
logger.info(`Received message: ${message}`);
});
ws.on('close', () => {
logger.info('Websocket client disconnected');
});
});
server.listen(PORT, () => {
logger.info(`Server is running on http://localhost:${PORT}`);
});
const getOrCreateCertificate = async () => {
if (process.env.USE_SSL === '1') {
if (!process.env.SSL_KEY || !process.env.SSL_CERT) {
return await createSelfSignedSSLCert();
}
return {
key: process.env.SSL_KEY,
cert: process.env.SSL_CERT
};
}
return null;
}
const createSelfSignedSSLCert = async () => {
const selfsigned = await import('selfsigned');
const pems = selfsigned.generate([{ name: 'Notebrook Self Signed Auto Generated Key', value: 'localhost' }], {
keySize: 2048,
days: 365
});
return {
key: pems.private,
cert: pems.cert
};
}