projeto-hit/backend/src/server.ts

124 lines
3.3 KiB
TypeScript

import gracefulShutdown from "http-graceful-shutdown";
import app from "./app";
import { initIO, getIO } from "./libs/socket";
import { logger } from "./utils/logger";
import { StartAllWhatsAppsSessions } from "./services/WbotServices/StartAllWhatsAppsSessions";
import User from "./models/User";
import Whatsapp from "./models/Whatsapp";
import endPointQuery from "./helpers/old_EndPointQuery";
import { cacheSize, flushCache, loadTicketsCache } from "./helpers/TicketCache";
import { loadContactsCache } from "./helpers/ContactsCache";
import "./helpers/CloseBotTickets";
import { loadSchedulesCache } from "./helpers/SchedulingNotifyCache";
import { delRestoreControllFile } from "./helpers/RestoreControll";
import "./helpers/AutoCloseTickets";
import "./helpers/SchedulingNotifySendMessage";
import axios from "axios";
import os from "os";
import Setting from "./models/Setting";
import fs from "fs";
import dir from "path";
import { getSettingValue } from "./helpers/WhaticketSettings";
import loadSettings from "./helpers/LoadSettings";
const server = app.listen(process.env.PORT, () => {
logger.info(`Server started on port: ${process.env.PORT}`);
});
// if (global.gc) {
// console.log(">> Starting Garbage Collector...");
// global.gc();
// } else {
// console.warn('No GC hook! Start your program as `node --expose-gc file.js`.');
// }
initIO(server);
// StartAllWhatsAppsSessions();
gracefulShutdown(server);
(async () => {
console.log("os.tmpdir(): ", os.tmpdir());
loadSettings();
let whatsapps: any = await Whatsapp.findAll({ attributes: ["id", "url"] });
// console.log('whatsapps: ', whatsapps)
if (whatsapps && whatsapps.length > 0) {
for (let i = 0; i < whatsapps.length; i++) {
try {
console.log(
`API URL: ${whatsapps[i].dataValues.url}/api/connection/status`
);
const response = await axios.get(
`${whatsapps[i].dataValues.url}/api/connection/status`,
{}
);
console.log(`-------> Response: ${response.data.data}`);
if (!response) {
throw new Error("Response null");
}
if (response.data.data && response.data.data == "CONNECTED") {
await whatsapps[i].update({ status: "CONNECTED" });
}
} catch (error: any) {
await whatsapps[i].update({ status: "OPENING" });
console.log(
`There was an error on try acess the api sessions ${whatsapps[i].dataValues.url}`
);
}
await new Promise(f => setTimeout(f, 100));
}
}
if (process.env.CACHE) {
const cacheLength = await cacheSize();
console.log("cacheSize: ", cacheLength);
if (cacheLength == 0) {
console.log("Loading from cache...");
await flushCache();
await loadContactsCache();
await loadTicketsCache();
}
await loadSchedulesCache();
// await loadWhatsappCache()
}
delRestoreControllFile();
})();
setTimeout(async () => {
const io = getIO();
console.log("Triggered socket!");
let users = await User.findAll({ raw: true, attributes: ["id"] });
if (users && users.length > 0) {
for (let i = 0; i < users.length; i++) {
io.emit("reload_page", {
action: "update",
userId: users[i].id
});
console.log("USER ID: ", users[i].id);
await new Promise(f => setTimeout(f, 100));
}
}
}, 5000);