0

過去 2 週間、私は Java グループ チャット アプリケーションに取り組んできました。これまでのところ、ユーザーはログインして、他のユーザーが作成したグループに参加できます。ユーザーは、各グループ内で互いにチャット メッセージを送信することもできます。メッセージの配信はサーバーによって処理され、サーバーはチャット メッセージを送信元のグループのクライアントにのみ送信します。ユーザーが属しているグループのリストも表示されます。現在アクティブな他のユーザーがいるかどうかをユーザーに知らせるために、小さな緑色のマーク(またはユーザーに通知するその他のもの)が必要です。チャットルームグループ。

私のグループがデータベースに保存される方法は次のとおりです

**TABLE groups**

 - id
 - user_count

**TABLE group_members**

 - groupid
 - userid

チャット メッセージの送受信はソケットを使用して処理され、送信されたメッセージはデータベースに保存されません。グループテーブルに、ユーザーが参加するたびに値が1ずつ増加し、ユーザーが離れるたびに値が1ずつ減少するフィールドを持つことを考えていました。このようにして、このフィールドに格納されている数値が0、ここには現在のユーザーはいません。これを処理するためのより良い方法があるかもしれないと思います。

4

2 に答える 2

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 に答える