firebase聊天应用中的在线用户

时间:2017-07-03 09:30:36

标签: android firebase firebase-realtime-database chat

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

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");
        }
    });

但我不知道如何使用它,请帮助我。

2 个答案:

答案 0 :(得分:1)

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

int numberOfUsers = dataSnapshot.getChildrenCount();.

如果您需要在成员列表中为在线成员显示绿点,那么您需要在这个新节点中添加这些用户的方式是将ID作为其密钥并且value作为布尔值。默认布尔值必须为false,这意味着用户未登录。您的新节点应如下所示:

userId1: true
userId2: false
userId3: true

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

答案 1 :(得分:0)

如果客户有服务器要对抗, 每个客户端连接都会报告给服务器,从而增加一个coutner。 对于此类增量服务器,通知(例如,使用Firebase数据通知消息)所有客户端。

这就是所有客户在任何特定时间都可以指示有多少客户被联系的方式。

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