0
我需要使用setInterval
做查詢數據庫中的每個N秒,消防結果所有Socket.IO
客戶,所以我不喜歡這樣寫道:通過過程使用NodeJS全局事件是個好主意嗎?
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)
})
})
它的正常工作,但我新手在NodeJS
和我不噸知道任何其他方式來做到這一點......一般來說,我明白,使用全球範圍並不是最好的主意,但我不知道其他人...
看起來好像你會爲每個連接查詢數據庫。這可能不是一個好主意。最好在某處註冊新連接,查詢一次數據庫,並將結果發送到每個連接。 –
@DanielDiekmeier與連接是一切正常。有單身人士。還有'if'語句確保'setInterval'函數只運行一次 – Kiril