2017-07-03 354 views
0

我正在使用firebase數據庫構建chatapp。我需要顯示在線用戶,我該怎麼做? 我已經嘗試過這個在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"); 
     } 
    }); 

但我不知道如何使用它,請幫助我。

+1

我建議你閱讀[this](https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html),它是關於使用Firebase構建呈現系統。這非常有趣 –

+0

除了那些(強烈推薦)博客帖子之外,Firebase文檔中的一個部分涵蓋了這一部分:https://firebase.google.com/docs/database/android/offline-capabilities#section-sample –

回答

1

要做到這一點,你需要在你所謂的onlineUsers火力地堡數據庫中創建一個新的類別。每次用戶連接到您的應用程序時,請將其添加到此新創建的類別中。然後你就可以在該類別查詢,發現用戶的這樣的確切數字:

int numberOfUsers = dataSnapshot.getChildrenCount();. 

如果您需要在成員列表中顯示爲在線會員一個綠點,然後在您需要的方式來增加這個新節點中的這些用戶將擁有該ID,因爲它是鍵和布爾值的值。默認布爾值必須爲faslse,這意味着用戶沒有登錄,您的新節點應該是這樣的:

userId1: true 
userId2: false 
userId3: true 

每次在,該用戶的值從falsetrue改變用戶的跡象。要顯示它們,只需查詢您的數據庫以查看哪些用戶的值爲true

+0

不是這樣的,例如,我需要在成員列表中爲在線成員顯示一個綠點。 –

+0

請看我更新的答案。 –

0

如果客戶端有一個服務器來處理,
每個客戶端連接都會報告給服務器,這會增加一個coutner。 而對於這樣的增量,服務器正在通知(例如,使用Firebase數據通知消息)所有客戶端。

這就是所有客戶在任何給定時間都會有多少指標得到指示的方式。

(當新用戶登錄時,服務器將數據發送關於當前連接數)