From ce64e667815b39efdc2f8bd52be0d43d49db8d84 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期日, 17 七月 2022 00:06:29 +0800
Subject: [PATCH] 优化小区位置
---
service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java | 82 ++++++++++++++++++++++++++---------------
1 files changed, 52 insertions(+), 30 deletions(-)
diff --git a/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java b/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java
index b38f5f2..3db7852 100644
--- a/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java
+++ b/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java
@@ -1,9 +1,11 @@
package com.java110.api.websocket;
import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.WsDataDto;
import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
@@ -20,7 +22,7 @@
* @Version 1.0
* add by wuxw 2020/6/5
**/
-@ServerEndpoint("/ws/message/{userId}")
+@ServerEndpoint("/ws/message/{userId}/{clientId}")
@Component
public class MessageWebsocket {
private final static Logger logger = LoggerFactory.getLogger(MessageWebsocket.class);
@@ -48,14 +50,17 @@
*/
private String userId = "";
+ private String clientId = "";
+
/**
* 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
*/
@OnOpen
- public void onOpen(Session session, @PathParam("userId") String userId) {
+ public void onOpen(Session session, @PathParam("userId") String userId, @PathParam("clientId") String clientId) {
this.session = session;
this.userId = userId;
+ this.clientId = clientId;
if (webSocketMap.containsKey(userId)) {
webSocketMap.remove(userId);
webSocketMap.put(userId, this);
@@ -68,12 +73,12 @@
}
- logger.debug("鐢ㄦ埛杩炴帴:" + userId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
+ logger.debug("鐢ㄦ埛杩炴帴:" + userId + ",瀹㈡埛绔細" + clientId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
try {
sendMessage("杩炴帴鎴愬姛");
} catch (IOException e) {
- logger.error("鐢ㄦ埛:" + userId + ",缃戠粶寮傚父!!!!!!");
+ logger.error("鐢ㄦ埛:" + userId + ",瀹㈡埛绔細" + clientId + ",缃戠粶寮傚父!!!!!!");
}
}
@@ -87,7 +92,7 @@
//浠巗et涓垹闄�
subOnlineCount();
}
- logger.info("鐢ㄦ埛閫�鍑�:" + userId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
+ logger.info("鐢ㄦ埛閫�鍑�:" + userId + ",瀹㈡埛绔細" + clientId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
}
/**
@@ -96,28 +101,44 @@
* @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
*/
@OnMessage
- public void onMessage(String message, Session session) {
- logger.info("鐢ㄦ埛娑堟伅:" + userId + ",鎶ユ枃:" + message);
+ public void onMessage(String message, Session session) throws IOException {
+ logger.info("鐢ㄦ埛娑堟伅:" + userId + ",瀹㈡埛绔細" + clientId + ",鎶ユ枃:" + message);
//鍙互缇ゅ彂娑堟伅
//娑堟伅淇濆瓨鍒版暟鎹簱銆乺edis
- if (!StringUtil.isEmpty(message)) {
- try {
- //瑙f瀽鍙戦�佺殑鎶ユ枃
- JSONObject jsonObject = JSONObject.parseObject(message);
- //杩藉姞鍙戦�佷汉(闃叉涓叉敼)
- jsonObject.put("fromUserId", this.userId);
- String toUserId = jsonObject.getString("toUserId");
- //浼犻�佺粰瀵瑰簲toUserId鐢ㄦ埛鐨剋ebsocket
- if (!StringUtil.isEmpty(toUserId) && webSocketMap.containsKey(toUserId)) {
- webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString());
- } else {
- logger.error("璇锋眰鐨刢lientId:" + toUserId + "涓嶅湪璇ユ湇鍔″櫒涓�");
- //鍚﹀垯涓嶅湪杩欎釜鏈嶅姟鍣ㄤ笂锛屽彂閫佸埌mysql鎴栬�卹edis
- }
- } catch (Exception e) {
- logger.error("鎺ユ敹瀹㈡埛绔秷鎭け璐�", e);
- }
+ if (StringUtil.isEmpty(message)) {
+ ResultVo resultVo = new ResultVo(ResultVo.CODE_ERROR, "鏈寘鍚唴瀹�");
+ webSocketMap.get(userId).sendMessage(resultVo.toString());
+ return;
}
+
+ if (!StringUtil.isJsonObject(message)) {
+ ResultVo resultVo = new ResultVo(ResultVo.CODE_ERROR, "涓嶆槸鏈夋晥鏁版嵁鏍煎紡");
+ webSocketMap.get(userId).sendMessage(resultVo.toString());
+ return;
+ }
+
+ WsDataDto wsDataDto = JSONObject.parseObject(message, WsDataDto.class);
+
+ switch (wsDataDto.getCmd()) {
+ case WsDataDto.CMD_PING:
+ //webSocketMap.get(userId).sendMessage(wsDataDto.toString());
+ break;
+ }
+
+// //瑙f瀽鍙戦�佺殑鎶ユ枃
+// JSONObject jsonObject = JSONObject.parseObject(message);
+// //杩藉姞鍙戦�佷汉(闃叉涓叉敼)
+// jsonObject.put("fromUserId", this.userId);
+// String toUserId = jsonObject.getString("toUserId");
+// //浼犻�佺粰瀵瑰簲toUserId鐢ㄦ埛鐨剋ebsocket
+// if (!StringUtil.isEmpty(toUserId) && webSocketMap.containsKey(toUserId)) {
+// webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString());
+// } else {
+// logger.error("璇锋眰鐨刢lientId:" + toUserId + "涓嶅湪璇ユ湇鍔″櫒涓�");
+// //鍚﹀垯涓嶅湪杩欎釜鏈嶅姟鍣ㄤ笂锛屽彂閫佸埌mysql鎴栬�卹edis
+// }
+
+
}
/**
@@ -126,8 +147,8 @@
*/
@OnError
public void onError(Session session, Throwable error) {
- logger.error("鐢ㄦ埛閿欒:" + this.userId + ",鍘熷洜:" + error.getMessage());
- error.printStackTrace();
+ logger.error("鐢ㄦ埛閿欒:" + this.userId + ",瀹㈡埛绔細" + clientId + ",鍘熷洜:" + error.getMessage());
+ // error.printStackTrace();
}
/**
@@ -143,10 +164,11 @@
*/
public static void sendInfo(String message, String userId) throws IOException {
logger.info("鍙戦�佹秷鎭埌:" + userId + "锛屾姤鏂�:" + message);
-
+ if (!webSocketMap.containsKey(userId)) {
+ //瀹㈡埛绔湭杩炴帴
+ return;
+ }
webSocketMap.get(userId).sendMessage(message);
-
-
}
public static synchronized int getOnlineCount() {
--
Gitblit v1.8.0