55 lines
1.4 KiB
TypeScript
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
|
|
};
|
|
} |