97 lines
3.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 8 с WEB API
Точка входа в сервер приложений
*/
//----------------------
// Подключение библиотек
//----------------------
require("module-alias/register"); //Поддержка псевонимов при подключении модулей
const cfg = require("./config"); //Настройки сервера приложений
const app = require("./core/app"); //Сервер приложений
const { makeErrorText } = require("./core/utils"); //Вспомогательные функции
//--------------------------
// Глобальные идентификаторы
//--------------------------
let appSrv = new app.ParusAppServer(); //Экземпляр сервера приложений
//----------------------------------------
// Управление процессом сервера приложений
//----------------------------------------
//Разрешение на TLS (Transport Layer Security) без авторизации
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
//Обработка события "выход" жизненного цикла процесса
process.on("exit", code => {
//Сообщим о завершении процесса
appSrv.logger.warn("Сервер приложений остановлен (код: " + code + ") ");
});
//Перехват CTRL + C (останов процесса)
process.on("SIGINT", async () => {
appSrv.logger.warn("Получен сигнал на останов сервера приложений: SIGINT");
//Инициируем выход из процесса
await appSrv.stop();
});
//Перехват CTRL + \ (останов процесса)
process.on("SIGQUIT", () => {
appSrv.logger.warn("Получен сигнал на останов сервера приложений: SIGQUIT");
//Инициируем выход из процесса
appSrv.stop();
});
//Перехват мягкого останова процесса
process.on("SIGTERM", () => {
appSrv.logger.warn("Получен сигнал на останов сервера приложений: SIGTERM");
//Инициируем выход из процесса
appSrv.stop();
});
//Грубый останов процесса (здесь сделать ничего нельзя, но мы пытаемся)
process.on("SIGKILL", () => {
appSrv.logger.warn("Получен сигнал на останов сервера приложений: SIGKILL");
//Инициируем выход из процесса
appSrv.stop();
});
//Перехват всех неохваченных ошибок
process.on("uncaughtException", e => {
//Протоколируем ошибку
appSrv.logger.error(makeErrorText(e));
//Инициируем выход из процесса
appSrv.stop();
});
//Запуск сервера приложений
const start = async () => {
try {
//Инициализируем сервер приложений
await appSrv.init({ config: cfg });
//Включаем его
await appSrv.run();
} catch (e) {
//Если есть ошибки с которыми сервер не справился - ловим их, показываем...
await appSrv.logger.error(makeErrorText(e));
//...и пытаемся остановить сервер нормально
try {
await appSrv.stop();
} catch (e) {
//Могут быть ошибки и при остановке - это аварийный выход
appSrv.logger.error(makeErrorText(e));
process.exit(1);
}
}
};
//------------
// Точка входа
//------------
//Старутем
start();