0

在过去的两周里,我一直在开发一个 java 群聊应用程序。到目前为止,用户可以登录并加入其他用户创建的组。用户还可以在每个组内相互发送聊天消息。消息分发由服务器处理,服务器仅将聊天消息发送到发送消息的组的客户端。还显示了用户所属的组列表,我希望有一个小的绿色标记(或任何其他通知用户)让用户知道当前是否有其他用户活动聊天室群。

这是我的组在数据库中的存储方式

**TABLE groups**

 - id
 - user_count

**TABLE group_members**

 - groupid
 - userid

聊天消息的发送和接收是使用套接字处理的,发送的消息都不存储在数据库中。我在考虑可能在组表中有一个字段,每次用户加入时都会将其中的值增加 1,而每次用户离开时,该值会减少 1。这样,如果存储在此字段中的数字是0,这里没有当前用户。我认为可能有更好的方法来处理这个问题。

4

2 回答 2

0

我只是按照问题中所述的想法去做。运行良好且速度足够快,可以满足我的需求。下面是数据库的外观 TABLE 组

  • ID
  • 用户计数
  • 活动 <--- 这是值增加或减少的地方。

表组成员

  • 群号
  • 用户身份
于 2013-08-08T02:12:30.907 回答
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
        }
    }

}

于 2013-08-06T20:58:40.303 回答