2013-08-06 14 views
0

在過去的兩週裏,我一直在研究java羣聊應用程序。到目前爲止,用戶可以登錄並加入由其他用戶創建的組。用戶還可以在每個組內發送聊天消息給對方。消息分發由服務器處理,服務器僅將聊天消息發送給發送它的組的客戶端。還顯示了用戶所屬的組列表,我希望有一個小的綠色標記(或其他任何通知用戶),讓用戶知道當前是否有其他用戶正處於活動狀態聊天室組。Java羣聊應用程序:瞭解羣組是否有用戶當前活動

這裏是我的組是如何存儲在數據庫中

**TABLE groups** 

- id 
- user_count 

**TABLE group_members** 

- groupid 
- userid 

發送和接收聊天消息的使用套接字進行處理,並沒有發送的消息都存儲在數據庫中。我正考慮在組表中添加一個字段,每次用戶加入時會將其中的值遞增1,並且每次用戶離開時,值都會減少1.這樣,如果存儲在此字段中的數字是0,這裏沒有當前用戶。我認爲可能有更好的方法來處理這個問題。

回答

0

我只是用我的想法去作爲的問題說明。適用於我的需求,足夠快速。繼承人如何數據庫看起來 表組

  • ID
  • USER_COUNT
  • 活動< ---這是那裏的值增加或decresed。

表group_members

  • 組識別符號
  • 用戶ID
0

對於每個擁有該組中每個玩家名稱的組,可以有一個數組列表。然後,您可以輕鬆獲取組中人員的姓名和人數。所以如果你有一個名爲Group類,你可以有這樣的:

class Group { 
    private ArrayList<String> users; // or instead of String if you have a User class use that 

    public Group(Type par) { 
     users = new ArrayList<String>(); 
    } 

    public static void addUser(String userName) { 
     users.add(userName); 
      updateUsers(); 
    } 

    public static void removeUser(String userName) { 
     for(int i = 0; i < users.size(); i++) { 
      if(users.get(i).equalsIgnoreCase(userName)) { 
       users.remove(i); 
      } 
    } 
      updateUsers(); 
    } 

    public static int getNumberOfUsers() { 
     return users.size(); 
    } 

    public static void updateUsers() { 
     for(String e : users) { 
      // send the user the necessary info to all users in the group 
     } 
    } 

}