使用Firebase功能进行反跳

时间:2019-05-24 21:11:39

标签: firebase firebase-realtime-database google-cloud-functions lodash debouncing

我有点想用firebase函数做类似的事情

enter image description here

。因此,我写了实时数据库,几分钟后它将设置为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毫秒)。第一次触发似乎很慢,但是此后立即触发,并且不会出现反跳现象。

firebase example of the issue

0 个答案:

没有答案