Fixed issue with dashboard and improved event loop

This commit is contained in:
lllllllillllllillll 2024-02-21 17:05:43 -08:00
parent 25280ae174
commit b62e209e6f
3 changed files with 20 additions and 46 deletions

View File

@ -291,21 +291,8 @@ async function containerCards() {
cardList = list;
}
export async function sendCheck() {
await getHidden();
await containerCards();
if (cardList != sentList) {
cardList = sentList;
return true;
} else {
return false;
}
}
export const Containers = async (req, res) => {
await getHidden();
await containerCards();
sentList = cardList;
res.send(cardList);
}

View File

@ -6,7 +6,6 @@ import Docker from 'dockerode';
import { router } from './router/index.js';
import { sequelize } from './database/models.js';
import { currentLoad, mem, networkStats, fsSize } from 'systeminformation';
import { sendCheck } from './controllers/dashboard.js';
export var docker = new Docker();
export { setEvent, cpu, ram, tx, rx, disk }
@ -80,34 +79,29 @@ let serverMetrics = async () => {
setInterval(serverMetrics, 1000);
// Docker events
docker.getEvents((err, stream) => {
if (err) throw err;
stream.on('data', (chunk) => {
event = true;
eventType = 'docker';
});
});
// Check if the container cards need to be updated
setInterval(async () => {
if (event == false) { return; }
sse = await sendCheck();
event = false;
}, 500);
let sent_list = '';
router.get('/sse_event', (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', });
let eventCheck = setInterval(async () => {
if (sse == true) {
sse = false;
let eventCheck = setInterval(async() => {
let all_containers = '';
await docker.listContainers({ all: true }).then(containers => {
containers.forEach(container => {
all_containers += `${container.Names}: ${container.State}\n`;
});
});
if (all_containers != sent_list) {
sent_list = all_containers;
setEvent(true, 'docker');
res.write(`event: ${eventType}\n`);
res.write(`data: there was an event!\n\n`);
}
}, 500);
}, 1000);
req.on('close', () => {
clearInterval(eventCheck);
});
});

View File

@ -22,7 +22,7 @@
</head>
<body >
<div class="page" hx-ext="sse" sse-connect="/sse_event">
<div class="page">
<%- include('navbar.html') %>
@ -137,15 +137,8 @@
</div>
<!-- HTMX -->
<div class="col-12">
<div class="row row-cards" data-hx-get="/containers" data-hx-trigger="load, sse:docker" data-hx-swap="innerHTML">
</div>
</div>
<!-- HTMX -->
<div class="col-12">
<div class="row row-cards" data-hx-get="/installing" data-hx-trigger="sse:install" data-hx-swap="innerHTML">
<div class="col-12" hx-ext="sse" sse-connect="/sse_event">
<div class="row row-cards" id="containerCards" data-hx-get="/containers" data-hx-trigger="load, sse:docker" data-hx-swap="innerHTML">
</div>
</div>