【问题标题】:Firebase inactive user removal from database list从数据库列表中删除 Firebase 非活动用户
【发布时间】:2017-03-16 15:44:44
【问题描述】:

这是我的 Firebase 数据库结构:

// Registered users
users{
  9BKlHH11NvU1kQdpwSaFshNJn8C2{
    foo: foo
    bar: bar
  B5Lq9RquOvcK7CLhh1Mdq0qWCqO2{
    foo: foo
    bar: bar

// Connected users inside the lobby
Lobby{
  9BKlHH11NvU1kQdpwSaFshNJn8C2,
  B5Lq9RquOvcK7CLhh1Mdq0qWCqO2

因此,每次注册用户登录并进入大厅时,他的 uid 都会添加到大厅列表中,这样每个人都可以看到他。如果他退出,则会有一个将他从大厅列表中删除的过程。 现在的问题是;在不离开大厅的情况下删除已关闭浏览器/应用程序的用户的最佳方法是什么,以便其余用户看不到该列表中实际未连接的人?可能有超时功能吗?

【问题讨论】:

  • OnDisconnect 会处理这个问题!这是iOS函数Firebase API
  • 有cordova插件吗?我正在使用 Ionic 2,但没有发现任何相关内容。

标签: firebase firebase-realtime-database firebase-authentication


【解决方案1】:

没有超时功能。

虽然在应用程序端,您可以在大厅添加和检查条目,并每隔 10 或 30 秒或更长时间发送一次信标请求,以使大厅的条目有效。

在 UI 中,在列出大厅中的用户时,如果大厅条目早于信标时间,您可以不列出它们或发送请求以删除它们。

最好跳过在 UI 中添加该用户,让旧条目在那里。发送删除请求将是矛盾的,如果更多前端发送请求从大厅中删除同一用户,则会产生冲突。但是,这完全取决于您的应用结构和用例。

【讨论】:

  • 我已经实现了以不同方式删除用户的逻辑检查。问题是检查数据库列表中的 uid。有没有办法在不使用数据库的情况下检查 uid 是否在线?例如,用户单击大厅列表中的名称,该过程会查看该用户是否在线,而不依赖于数据库列表。这样,我可以实现用户删除离线 uid。
猜你喜欢
  • 2017-12-25
  • 2020-10-29
  • 2019-02-02
  • 1970-01-01
  • 2020-01-17
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多