farmcontrol-ws/src/index.js
Tom Butcher 53246b70b2 Refactor socket management to remove Keycloak integration
- Eliminated KeycloakAuth from the SocketManager initialization.
- Updated SocketManager to directly use the server instance, simplifying the socket management setup.
2025-08-18 01:07:39 +01:00

51 lines
1.3 KiB
JavaScript

import { loadConfig } from './config.js';
import { SocketManager } from './socket/socketmanager.js';
import { etcdServer } from './database/etcd.js';
import express from 'express';
import log4js from 'log4js';
import http from 'http';
import { mongoServer } from './database/mongo.js';
(async () => {
// Load configuration
const config = loadConfig();
// Setup logger
const logger = log4js.getLogger('FarmControl API WS');
logger.level = config.server.logLevel;
// Create Express app and HTTP server
const app = express();
const server = http.createServer(app);
new SocketManager(server);
// Connect to Etcd (await)
try {
await etcdServer.connect();
logger.info('Connected to Etcd');
} catch (err) {
logger.error('Failed to connect to Etcd:', err);
throw err;
}
// Connect to Mongo DB (await)
try {
await mongoServer.connect();
logger.info('Connected to Mongo DB');
} catch (err) {
logger.error('Failed to connect to Mongo DB:', err);
throw err;
}
// Start HTTP server
server.listen(config.server.port, () => {
logger.info(`Server listening on port ${config.server.port}`);
});
process.on('SIGINT', async () => {
logger.info('Shutting down...');
await etcdServer.disconnect();
});
})();