Software
v0.0..1
This commit is contained in:
41
software/v0.0.1/ws_server.js
Normal file
41
software/v0.0.1/ws_server.js
Normal file
@@ -0,0 +1,41 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user