0
Ich brauche setInterval
zu verwenden, um Abfragen zur Datenbank jeweils N Sekunden und Feuer Ergebnisse aller Socket.IO
Kunden zu tun, so dass ich es wie folgt tun:Ist es eine gute Idee, globale NodeJS-Ereignisse per Prozess zu verwenden?
let interval_id = null
io.on('connection', function(socket) {
if (interval_id == null) {
interval_id = setInterval(function() {
db.table.items.getAll().then(function(items) {
process.emit('items_found', items)
}).catch(function(err) {
log.error(err)
})
}, config.scan.interval)
}
process.on('alarms_found', function(alarms) {
console.log(alarms.length)
})
})
Es funktioniert gut, aber ich bin Neuling in NodeJS
und I don‘ t kenne andere Möglichkeiten, dies zu tun ... Im Allgemeinen verstehe ich, dass die Verwendung von globalen Umfang nicht die beste Idee ist, aber ich weiß nicht, andere ...
Es sieht so aus, als würden Sie die Datenbank für jede Verbindung abfragen. Dies ist wahrscheinlich keine gute Idee. Es wäre besser, die neue Verbindung irgendwo zu registrieren, die Datenbank einmal abzufragen und das Ergebnis an jede Verbindung zu senden. –
@DanielDiekmeier mit Verbindung ist alles in Ordnung. Es gibt Singleton. Außerdem gibt es eine 'if'-Anweisung, die sicherstellt, dass die' setInterval'-Funktion nur einmal ausgeführt wird – Kiril