|  |  |  | 
|---|
|  |  |  | * 记录当前在线连接数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static final Map<String, Session> sessionMap = new ConcurrentHashMap<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 连接建立成功调用的方法 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | //        {"users": [{"username": "zhang"},{ "username": "admin"}]} | 
|---|
|  |  |  | sendAllMessage(JSONUtil.toJsonStr(result));  // 后台发送消息给所有的客户端 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 连接关闭调用的方法 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | sessionMap.remove(username); | 
|---|
|  |  |  | log.info("有一连接关闭,移除username={}的用户session, 当前在线人数为:{}", username, sessionMap.size()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 收到客户端消息后调用的方法 | 
|---|
|  |  |  | * 后台收到客户端发送过来的消息 | 
|---|
|  |  |  | * onMessage 是一个消息的中转站 | 
|---|
|  |  |  | * 接受 浏览器端 socket.send 发送过来的 json数据 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param message 客户端发送过来的消息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @OnMessage | 
|---|
|  |  |  | 
|---|
|  |  |  | // {"to": "admin", "text": "聊天文本"} | 
|---|
|  |  |  | if ("heartBeat".equals(toUsername)) { | 
|---|
|  |  |  | log.info("心跳"); | 
|---|
|  |  |  | }else if ("all".equals(toUsername)) { | 
|---|
|  |  |  | } else if ("all".equals(toUsername)) { | 
|---|
|  |  |  | sendAllMessage(text); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Session toSession = sessionMap.get(toUsername); // 根据 to用户名来获取 session,再通过session发送消息文本 | 
|---|
|  |  |  | if (toSession != null) { | 
|---|
|  |  |  | // 服务器端 再把消息组装一下,组装后的消息包含发送人和发送的文本内容 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @OnError | 
|---|
|  |  |  | public void onError(Session session, Throwable error) { | 
|---|
|  |  |  | log.error("发生错误"); | 
|---|
|  |  |  | error.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 服务端发送消息给客户端 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | log.error("服务端发送消息给客户端失败", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 服务端发送消息给所有客户端 | 
|---|
|  |  |  | */ | 
|---|