2013-08-06 16 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 
     } 
    } 

}