【问题标题】:Firebase + js (angular) change online state when leave windowFirebase + js(角度)离开窗口时改变在线状态
【发布时间】:2018-08-23 21:24:09
【问题描述】:

嘿,我正在尝试为我的 Web 应用程序(角度 5 + firebase)的每个用户建立一个属性 stateOnline。 我在 Android 上看到的东西很少,我尝试为我实现一些东西:

  signInUser(email: string, password: string) {
    return new Promise(
      (resolve, reject) => {
        firebase.auth().signInWithEmailAndPassword(email, password).then(
          () => {
            this.setOnlineState(true);
            resolve();
          },
          (error) => {
            reject(error);
          }
        );
      }
    );
  }

  signOutUser() {
    this.setOnlineState(false);
    firebase.auth().signOut();
  }

  setOnlineState(state: boolean) {
    const currentUser = firebase.auth().currentUser;
    firebase.database().ref("users/" + currentUser.uid).update({ onlineState: state });
  }

当用户单击调用 signIn 和 signOut 的按钮时它工作正常,但如果他离开页面而不单击 signOut,onlineState 将保持为 true !我该如何纠正这个问题?

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database


    【解决方案1】:

    使用onbeforeunload事件:

    onbeforeunload

    HTML:

    <div (window:beforeunload)="doSignOff()"></div>
    

    TS:

      doSignOff(){
        this.setOnlineState(false);
    
        //If you want to make sign out.
        firebase.auth().signOut();
      }
    

    【讨论】:

    • 我在使用它时遇到了一个问题。当页面刷新时,它会注销用户!
    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多