我有点想用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毫秒)。第一次触发似乎很慢,但是此后立即触发,并且不会出现反跳现象。