Much more easy - one sub for all

This commit is contained in:
2025-04-02 14:05:37 +00:00
parent a426c0a171
commit 69a79044a7
2 changed files with 46 additions and 34 deletions

View File

@@ -21,7 +21,7 @@
th {
background-color: #f4f4f4;
}
.new-row { background-color: #ff0099; transition: background-color 1.5s; }
.new-row { background-color: #ff0099; transition: background-color 1.5s ease; }
</style>
</head>
<body>
@@ -76,7 +76,7 @@
CellMode.textContent = message.mode;
CellRSTR.textContent = message.RST_RCVD;
CellRSTS.textContent = message.RST_SENT;
timestampCell.textContent = message.qso_time;;
timestampCell.textContent = tsclean(message.qso_time);
row.appendChild(timestampCell);
row.appendChild(CellStationCall);
@@ -89,7 +89,9 @@
row.appendChild(CellRSTS);
row.classList.add('new-row');
tableBody.insertBefore(row, tableBody.firstChild);
$(row).removeClass('new-row', 1500);
setTimeout(() => {
row.classList.remove('new-row');
}, 1500);
});
@@ -101,6 +103,13 @@
*/
})();
function tsclean(timestamp) {
const parts = timestamp.split(':');
if (parts.length === 2) {
return `${timestamp}:00`;
}
return timestamp; // Already normalized
}
</script>
</body>
</html>

35
mqtt.js
View File

@@ -17,23 +17,20 @@ app.get('/', (req, res) => { // Routing fuer index.html
res.sendFile(__dirname + '/index.html'); // index.html rauspusten
});
io.on('connection', (socket) => { // Neue socket.io Connection?
console.log(socket.id + " connected"); // Debug
client[socket.id] = mqtt.connect(mqttserver); // Dann neue MQTT-Verbindung aufmachen (je sock.io CLient eine, indiziert ueber die socket.id)
client[socket.id].subscribe('wavelog/#'); // Vom alten topic "unscubriben"
/*
socket.on('wishtopic', (msg) => { // Von der Website kommt ein neuer Topic-Wunsch
client[socket.id].unsubscribe(topica); // Vom alten topic "unscubriben"
client[socket.id].subscribe(msg); // Neues Subscriben
topica=msg; // Neues merken
console.log('message: ' + msg); // Debug-Log
const mqttC=mqtt.connect(mqttserver);
mqttC.on('connect', () => {
console.log('Connected to MQTT broker');
mqttC.subscribe('wavelog/#', (err) => {
if (!err) {
console.log(`Subscribed to topic`);
} else {
console.log('Error');
console.log(err);
}
});
*/
socket.on("disconnect", (reason) => { // Socket.io Client gone? Dann mqtt fuer diesen Client wieder schliessen
client[socket.id].end();
console.log(socket.id + " disconnected");
});
client[socket.id].on('message', function (topic, message) { // Handler, wenn mqtt-message kommt
mqttC.on('message', function (topic, message) { // Handler, wenn mqtt-message kommt
date=new Date(); // Timestamp in date merken
msg={}; // msg-object initialisieren
if (message.toString().substring(0,1)=='{') { // JSON-String? Dann aufbereiten
@@ -47,11 +44,17 @@ io.on('connection', (socket) => { // Neue socket.io Connection?
msg.content=message.toString(); // Ist nix json? dann ab in "content" damit
}
tobrowser=parse_msg(msg.content);
socket.emit("mqtt",tobrowser); // und raus an den Browser (nur fuer DIESES Socket, nicht fuer alle Clients) damit
io.emit("mqtt",tobrowser); // und raus an den Browser (nur fuer DIESES Socket, nicht fuer alle Clients) damit
console.log('QSO from: '+tobrowser.station_call+' with '+tobrowser.call+' in Mode: '+tobrowser.mode+' at '+tobrowser.qso_time);
// socket.emit("mqtt",parse_msg(msg)); // und raus an den Browser (nur fuer DIESES Socket, nicht fuer alle Clients) damit
});
io.on('connection', (socket) => { // Neue socket.io Connection?
console.log(socket.id + " connected"); // Debug
socket.on("disconnect", (reason) => { // Socket.io Client gone? Dann mqtt fuer diesen Client wieder schliessen
console.log(socket.id + " disconnected");
});
});
function parse_msg(msg) {