0
私はこのようにそれを行うように、すべてのSocket.IO
クライアントにデータベースに各N秒と火災の結果をクエリを行うためにsetInterval
を使用する必要があります。Process経由で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と接続しても問題ありません。シングルトンがあります。また、 'setInterval'関数が1回だけ実行されることを保証する' if'ステートメントがあります – Kiril