From 190cc52625bea627b6266f0124bd0d638f03394c Mon Sep 17 00:00:00 2001 From: clll <1320612696@qq.com> Date: 星期三, 06 九月 2023 17:15:56 +0800 Subject: [PATCH] 更新代码 --- springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java | 198 ++++++++++++++++++++++++++----------------------- 1 files changed, 104 insertions(+), 94 deletions(-) diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java b/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java index 697d697..3302c9b 100644 --- a/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java +++ b/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java @@ -7,7 +7,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; @@ -16,8 +15,8 @@ import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Component; - import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -26,105 +25,116 @@ @Component public class WebSocketServer { - private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class); - private List<String> messages; - /** - * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁� - */ - public static final Map<String, WebSocketServer> sessionMap = new ConcurrentHashMap<>(); - - String username; - Session session; - public WebSocketServer() { - this.messages = new ArrayList<>(); - } - /** - * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉� - */ - @OnOpen - public void onOpen(Session session, @PathParam("username") String username) { - this.username=username; - this.session=session; - sessionMap.put(username, this); - log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.size()); - - // JSONObject result = new JSONObject(); - // JSONArray array = new JSONArray(); - // result.set("users", array); - // for (Object key : sessionMap.keySet()) { - // JSONObject jsonObject = new JSONObject(); - // jsonObject.set("username", key); - // array.add(jsonObject); - // } - - //sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔� - } + static ConfigurableApplicationContext applicationContext; + // 瑙e喅鏃犳硶娉ㄥ叆mapper闂 聽//浣跨敤鏂规硶 + // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class); - /** - * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉� - */ - @OnClose - public void onClose(Session session, @PathParam("username") String username) { - sessionMap.remove(username); - log.info("鏈変竴杩炴帴鍏抽棴锛岀Щ闄sername={}鐨勭敤鎴穝ession, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.size()); - } + public static void setApplicationContext(ConfigurableApplicationContext configurableApplicationContext) { + WebSocketServer.applicationContext = configurableApplicationContext; + } - /** - * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉� - * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅 - * onMessage 鏄竴涓秷鎭殑涓浆绔� - * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁 - * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅 - */ - @OnMessage - public void onMessage(String message, Session session, @PathParam("username") String username) { - log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message); - JSONObject obj = JSONUtil.parseObj(message); - String text = obj.getStr("data"); + private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class); + private List<String> messages; + /** + * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁� + */ + public static final Map<String, WebSocketServer> sessionMap = new ConcurrentHashMap<>(); - JSONObject jsonObject = new JSONObject(); - jsonObject.set("message", text); - this.messages.add(text); - this.sendMessage(jsonObject.toString()); //JSONUtil.toJsonStr(jsonObject) - } + String username; + Session session; - @OnError - public void onError(Session session, Throwable error) { - log.error("鍙戠敓閿欒"); - error.printStackTrace(); - } + public WebSocketServer() { + this.messages = new ArrayList<>(); + } - /** - * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔� - */ - public void sendMessage(String message) { - try { - log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message); - this.session.getBasicRemote().sendText(message); - } catch (Exception e) { - log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e); - } - } + /** + * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉� + */ + @OnOpen + public void onOpen(Session session, @PathParam("username") String username) { + this.username = username; + this.session = session; + sessionMap.put(username, this); + log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.size()); - /** - * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风 - */ - public void sendAllMessage(String message) { - try { - for (WebSocketServer webSocketServer : sessionMap.values()) { - log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message); - webSocketServer.sendMessage(message); - } - } catch (Exception e) { - log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e); - } - } + // JSONObject result = new JSONObject(); + // JSONArray array = new JSONArray(); + // result.set("users", array); + // for (Object key : sessionMap.keySet()) { + // JSONObject jsonObject = new JSONObject(); + // jsonObject.set("username", key); + // array.add(jsonObject); + // } - public List<String> getMessages() { - return messages; - } + // sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔� + } - public void clearMessages() { - messages.clear(); + /** + * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉� + */ + @OnClose + public void onClose(Session session, @PathParam("username") String username) { + sessionMap.remove(username); + log.info("鏈変竴杩炴帴鍏抽棴锛岀Щ闄sername={}鐨勭敤鎴穝ession, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.size()); + } + + /** + * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉� + * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅 + * onMessage 鏄竴涓秷鎭殑涓浆绔� + * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁 + * + * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅 + */ + @OnMessage + public void onMessage(String message, Session session, @PathParam("username") String username) { + log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message); + JSONObject obj = JSONUtil.parseObj(message); + String text = obj.getStr("data"); + + JSONObject jsonObject = new JSONObject(); + jsonObject.set("message", text); + this.messages.add(text); + this.sendMessage(jsonObject.toString()); // JSONUtil.toJsonStr(jsonObject) + } + + @OnError + public void onError(Session session, Throwable error) { + log.error("鍙戠敓閿欒"); + error.printStackTrace(); + } + + /** + * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔� + */ + public void sendMessage(String message) { + try { + log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message); + this.session.getBasicRemote().sendText(message); + } catch (Exception e) { + log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e); } + } + + /** + * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风 + */ + public void sendAllMessage(String message) { + try { + for (WebSocketServer webSocketServer : sessionMap.values()) { + log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message); + webSocketServer.sendMessage(message); + } + } catch (Exception e) { + log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e); + } + } + + public List<String> getMessages() { + return messages; + } + + public void clearMessages() { + messages.clear(); + } } -- Gitblit v1.8.0