Fixed issue with dashboard and improved event loop
This commit is contained in:
parent
25280ae174
commit
b62e209e6f
3 changed files with 20 additions and 46 deletions
|
@ -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);
|
||||
}
|
||||
|
|
40
server.js
40
server.js
|
@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue