Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – firebase计算在线用户并在全局计数器中更新大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想计算firebase中的在线用户并将值存储在online_users下的firebase中,当用户连接到app以增加online_users并且当用户从app断开连接到减量时.
我建立了firebase功能

export const countOnlineUser = functions.database
.ref('/UserStatus/{uiD}')
.onWrite((change,context) => {
    var collectionRef = change.after.ref.parent;
    var countRef = collectionRef.child('online_users');

    let increment = 0;
    if (change.after.exists() && !change.before.exists()) {
        increment = 1;
    } else if (!change.after.exists() && change.before.exists()) {
        increment = -1;
    } else {
        return null;
    }

    // Return the promise from countRef.transaction() so our function
    // waits for this async event to complete before it exits.
    return countRef.transaction((current) => {
         console.log(current)
        if (current == null) {
            return 0;
        }
        else {
            return (current || 0) + increment;
        }

        }).then(() => {
            return console.log('Counter updated.');
        });

});

每次用户连接到应用程序时,客户端更新用户

constructor() {
        firebase.auth().onAuthStateChanged((user) => {
            if (user) {
                const { uid,phonenumber } = firebase.auth().currentUser._user
                 UserStore.setUID(uid)
                 this.setListenConnection()

            }

        })


    setListenConnection = async () => {

        thiS.UserStatusDatabaseRef = firebaseRef(`UserStatus/${UserStore.user.uiD}`)

        firebaseRef('.info/connected').on('value',async connected => {
            if (connected.val() === falsE) {
                return
            }

            await firebaseRef(`UserStatus/${UserStore.user.uiD}`).onDisconnect().remove()
            thiS.UserStatusDatabaseRef.set({ state: 'online',last_changed: firebase.firestore.FieldValue.servertimestamp() },{ merge: true })
        })
    }

node.js – firebase计算在线用户并在全局计数器中更新

我对这些功能有一些问题
有时online_users是负面的,我想阻止它.
有时我进入交易当前是空的.

我该如何解决

解决方法

Performance Monitoring公开会话或当前用户,但它似乎只适用于移动应用程序(ios / android).

至于云功能,请查看Writing and Viewing Logs.如果可行,这将是API.

大佬总结

以上是大佬教程为你收集整理的node.js – firebase计算在线用户并在全局计数器中更新全部内容,希望文章能够帮你解决node.js – firebase计算在线用户并在全局计数器中更新所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。