【问题标题】:Java Group Chat Application: Knowing if groups have users currently activeJava 群聊应用程序:了解群组当前是否有活跃用户
【发布时间】:2013-08-08 10:12:30
【问题描述】:

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

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

**TABLE groups**

 - id
 - user_count

**TABLE group_members**

 - groupid
 - userid

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

【问题讨论】:

    标签: java swing sockets chat chatroom


    【解决方案1】:

    您可以为每个组创建一个数组列表,其中包含该组中每个玩家的姓名。然后,您可以轻松获取组中人员的姓名和组中的人数。所以如果你有一个名为 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
            }
        }
    

    }

    【讨论】:

      【解决方案2】:

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

      • 身份证
      • user_count
      • 活动

      TABLE group_members

      • groupid
      • 用户名

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        • 2013-09-07
        相关资源
        最近更新 更多