liuxiaolong
2019-05-09 0d1d88cdb668e75ea8609417ac18ae19947e9525
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.common.websocket.onchat;
 
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
import org.java_websocket.WebSocket;
 
 
public class ChatServerPool {
 
    private static final Map<WebSocket,String> userconnections = new HashMap<WebSocket,String>();
    
    /**
     * 获取用户名
     * @param session
     */
    public static String getUserByKey(WebSocket conn){
        return userconnections.get(conn);
    }
    
    /**
     * 获取WebSocket
     * @param user
     */
    public static WebSocket getWebSocketByUser(String user){
        Set<WebSocket> keySet = userconnections.keySet();
        synchronized (keySet) {
            for (WebSocket conn : keySet) {
                String cuser = userconnections.get(conn);
                if(cuser.equals(user)){
                    return conn;
                }
            }
        }
        return null;
    }
    
    /**
     * 向连接池中添加连接
     * @param inbound
     */
    public static void addUser(String user, WebSocket conn){
        userconnections.put(conn,user);    //添加连接
    }
    
    /**
     * 获取所有的在线用户
     * @return
     */
    public static Collection<String> getOnlineUser(){
//        List<String> setUsers = new ArrayList<String>();
        Collection<String> setUsers = userconnections.values();
//        for(String u:setUser){
//            setUsers.add("<a onclick=\"toUserMsg('"+u+"');\">"+u+"</a>");
//        }
        return setUsers;
    }
    
    /**
     * 移除连接池中的连接
     * @param inbound
     */
    public static boolean removeUser(WebSocket conn){
        if(userconnections.containsKey(conn)){
            userconnections.remove(conn);    //移除连接
            return true;
        }else{
            return false;
        }
    }
    
    /**
     * 向特定的用户发送数据
     * @param user
     * @param message
     */
    public static void sendMessageToUser(WebSocket conn,String message){
        if(null != conn && null != userconnections.get(conn)){
            conn.send(message);
        }
    }
    
    /**
     * 向所有的用户发送消息
     * @param message
     */
    public static void sendMessage(String message){
        Set<WebSocket> keySet = userconnections.keySet();
        synchronized (keySet) {
            for (WebSocket conn : keySet) {
                String user = userconnections.get(conn);
                if(user != null){
                    conn.send(message);
                }
            }
        }
    }
}