-
Diego Sampaio authoredDiego Sampaio authored
service.ts 1.38 KiB
import { api, getConnection, getTrashCollection } from '@rocket.chat/core-services';
import { Logger } from '@rocket.chat/logger';
import { broker } from '@rocket.chat/network-broker';
import { startTracing } from '@rocket.chat/tracing';
import polka from 'polka';
import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
import { DatabaseWatcher } from '../../../../apps/meteor/server/database/DatabaseWatcher';
import { StreamHub } from './StreamHub';
const PORT = process.env.PORT || 3035;
(async () => {
const { db, client } = await getConnection();
startTracing({ service: 'stream-hub-service', db: client });
registerServiceModels(db, await getTrashCollection());
api.setBroker(broker);
// TODO having to import Logger to pass as a param is a temporary solution. logger should come from the service (either from broker or api)
const watcher = new DatabaseWatcher({ db, logger: Logger });
api.registerService(new StreamHub(watcher, Logger));
await api.start();
polka()
.get('/health', async function (_req, res) {
try {
await api.nodeList();
if (watcher.isLastDocDelayed()) {
throw new Error('No real time data received recently');
}
} catch (err) {
console.error('Service not healthy', err);
res.writeHead(500);
res.end('not healthy');
return;
}
res.end('ok');
})
.listen(PORT);
})();