【问题标题】:Online users in firebase chat appFirebase 聊天应用中的在线用户
【发布时间】:2017-12-06 12:28:11
【问题描述】:

我正在使用 firebase 数据库构建一个聊天应用程序。我需要向在线用户展示,我该怎么做? 这个我已经试过了

connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
    connectedRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            boolean connected = snapshot.getValue(Boolean.class);
            if (connected) {

            } else {

            }
        }

        @Override
        public void onCancelled(DatabaseError error) {
            System.err.println("Listener was cancelled");
        }
    });

但是我不知道怎么用,请帮帮我。

【问题讨论】:

  • 我建议你阅读this,它是关于使用firebase构建一个存在系统的。真的很有趣
  • 除了那些(强烈推荐的)博文之外,Firebase 文档中还有一个部分涵盖了这一点:firebase.google.com/docs/database/android/…

标签: android firebase firebase-realtime-database chat


【解决方案1】:

如果客户有一个服务器要处理,
每个客户端连接都会报告给服务器,这会增加一个 coutner。 对于这样的增量服务器正在通知(例如使用 Firebase 数据通知消息)所有客户端。

这是所有客户端在任何给定时间都将有多少连接的指示。

(当新用户登录时,服务器正在发送有关当前连接数的数据)

【讨论】:

    【解决方案2】:

    为此,您需要在 Firebase 数据库中创建一个名为 onlineUsers 的新类别。每次用户连接到您的应用时,将他添加到这个新创建的类别中。然后您可以查询该类别以查看确切的用户数量,如下所示:

    int numberOfUsers = dataSnapshot.getChildrenCount();.
    

    如果您需要在成员列表中为在线成员显示一个绿点,那么您需要在这个新节点中添加这些用户的方式是将 id 作为键,将值作为布尔值.默认的布尔值必须是false,这意味着用户没有登录。你的新节点应该是这样的:

    userId1: true
    userId2: false
    userId3: true
    

    每次用户登录时,将该用户的值从 false 更改为 true。要显示它们,只需相应地查询您的数据库,以查看哪些用户的值为 true

    【讨论】:

    • 不是这样的,比如我需要在会员列表中为在线会员显示一个绿点。
    • 嗨,我对在我的聊天应用程序中显示在线和离线用户感到震惊。如果我们使用上面的代码,如何管理像一个用户打开应用程序并在一分钟后关闭应用程序这样的事情。在这种情况下如何获取在线和离线用户列表?
    • @Deepak 请使用自己的MCVE 发布另一个新问题,以便我和其他 Firebase 开发人员可以帮助您。
    猜你喜欢
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多