42 lines
984 B
JavaScript
42 lines
984 B
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const WebSocket = require('ws');
|
|
|
|
const LOG = path.join(__dirname, 'data', 'bot.log');
|
|
const PORT = process.env.PORT || 8090;
|
|
|
|
const wss = new WebSocket.Server({ port: PORT });
|
|
console.log('WS server running at ws://localhost:' + PORT);
|
|
|
|
// Funktion til at hente de sidste n linjer fra logfilen
|
|
function tail(n = 80) {
|
|
try {
|
|
const t = fs.readFileSync(LOG, 'utf8');
|
|
const L = t.split('\n');
|
|
return L.slice(-n).join('\n');
|
|
} catch (e) {
|
|
return '';
|
|
}
|
|
}
|
|
|
|
// Send seneste log ved ny forbindelse
|
|
wss.on('connection', ws => {
|
|
ws.send(JSON.stringify({
|
|
type: 'log',
|
|
data: tail(80)
|
|
}));
|
|
});
|
|
|
|
// Tjek for ændringer i logfilen og broadcast
|
|
let last = '';
|
|
setInterval(() => {
|
|
const t = tail(80);
|
|
if (t !== last) {
|
|
const payload = JSON.stringify({ type: 'log', data: t });
|
|
wss.clients.forEach(c => {
|
|
if (c.readyState === WebSocket.OPEN) c.send(payload);
|
|
});
|
|
last = t;
|
|
}
|
|
}, 500);
|