Я бы хотел сделать что-то подобное с функциями Firebase
, но медленнее .Поэтому я пишу в БД реального времени, и через несколько минут она будет установлена на false
.
Это моя попытка:
const debounce = require('lodash.debounce') // "^4.0.8"
...
exports.deviceConnected = functions.https.onRequest((request, response) => {
const now = `${format(new Date(), 'YYYY-MM-DD HH:mm:ss')}`
return admin
.database()
.ref('connected')
.set(now)
.then(() => response.send(`Connected updated ${now}`))
})
function deviceDisconnect() {
admin
.database()
.ref('connected')
.set(false)
}
exports.updateDeviceConnection = functions.database
.ref('connected')
.onUpdate((change, context) => {
const connected = change.after.val()
if (connected) {
debounce(deviceDisconnect(), 7000, {
leading: false,
trailing: true,
})
}
return true
})
Для разработки я использую 7 сек (7000мс).Первый триггер кажется медленным, но после этого он незамедлительный и не вызывает спама.