From 9dbccf93a83ce8dc4ff05fc98b39ce100727397a Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 15:07:54 +0800 Subject: [PATCH] websocket --- .../websocket/handler/PlusWebSocketHandler.java | 1 + .../websocket/holder/WebSocketSessionHolder.java | 4 ++++ .../common/websocket/utils/WebSocketUtils.java | 1 + .../controller/TbVisitorManagementController.java | 14 +++++++++++--- .../impl/TbVisitorManagementServiceImpl.java | 1 + .../sis/controller/VideoAlarmController.java | 8 ++++++-- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index 557ed8eb..abb35061 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -35,6 +35,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { } WebSocketSessionHolder.addSession(loginUser.getUserId(), session); log.info("[connect] sessionId: {},userId:{},userType:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType()); + System.out.println(WebSocketSessionHolder.getSessions(loginUser.getUserId())); } /** diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java index 9c2372b8..5d286dfa 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java @@ -26,8 +26,10 @@ public class WebSocketSessionHolder { * @param session 要添加的WebSocket会话 */ public static void addSession(Long sessionKey, WebSocketSession session) { + System.out.println(USER_SESSION_MAP); removeSession(sessionKey); USER_SESSION_MAP.put(sessionKey, session); + System.out.println(USER_SESSION_MAP); } /** @@ -36,6 +38,7 @@ public class WebSocketSessionHolder { * @param sessionKey 要移除的会话键 */ public static void removeSession(Long sessionKey) { + System.out.println(USER_SESSION_MAP); WebSocketSession session = USER_SESSION_MAP.remove(sessionKey); try { session.close(CloseStatus.BAD_DATA); @@ -50,6 +53,7 @@ public class WebSocketSessionHolder { * @return 与给定会话键对应的WebSocket会话,如果不存在则返回null */ public static WebSocketSession getSessions(Long sessionKey) { + System.out.println(USER_SESSION_MAP); return USER_SESSION_MAP.get(sessionKey); } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index 35320c6e..be9bfe6c 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -36,6 +36,7 @@ public class WebSocketUtils { */ public static void sendMessage(Long sessionKey, String message) { WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey); + sendMessage(session, message); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java index f7edb234..42da562b 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java @@ -7,6 +7,7 @@ import java.util.UUID; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.config.ConfigService; + import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -14,6 +15,9 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.constant.GlobalConstants; import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.websocket.dto.WebSocketMessageDto; +import org.dromara.common.websocket.holder.WebSocketSessionHolder; +import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.property.domain.bo.QrCodeInfo; import org.dromara.resource.api.RemoteMessageService; import org.dromara.system.api.RemoteConfigService; @@ -51,8 +55,6 @@ public class TbVisitorManagementController extends BaseController { @DubboReference private final RemoteConfigService remoteConfigService; - @DubboReference(stub = "true") - private final RemoteMessageService remoteMessageService; @@ -97,7 +99,13 @@ public class TbVisitorManagementController extends BaseController { JSONObject jsonObject = new JSONObject(); jsonObject.put("type","qrcode"); jsonObject.put("date",qrcode); - remoteMessageService.publishMessage(List.of(qrCodeInfo.getUserid()),jsonObject.toString()); + System.out.println(WebSocketSessionHolder.getSessions(1L)); + System.out.println(WebSocketSessionHolder.getSessionsAll()); + WebSocketMessageDto webSocketMessage = new WebSocketMessageDto(); + webSocketMessage.setMessage(jsonObject.toString()); + webSocketMessage.setSessionKeys(List.of(qrCodeInfo.getUserid())); + WebSocketUtils.publishMessage(webSocketMessage); +// WebSocketUtils.sendMessage(qrCodeInfo.getUserid(),jsonObject.toString()); return R.ok("二维码可用"); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java index 3accd7ed..63dd52d0 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java @@ -105,6 +105,7 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi @Override public Boolean insertByBo(TbVisitorManagementBo bo) { QrCodeInfo info = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + bo.getQrCodeId()); + RedisUtils.deleteKeys(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + bo.getQrCodeId()); TbVisitorManagement add = MapstructUtils.convert(bo, TbVisitorManagement.class); validEntityBeforeSave(add); add.setCreateById(info.getUserid()); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java index 07bb40b2..54a1d276 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java @@ -2,12 +2,15 @@ package org.dromara.sis.controller; import com.alibaba.fastjson2.JSONObject; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.sis.sdk.unview.model.UvModel; import org.dromara.sis.sdk.unview.service.VideoAlarmService; import org.springframework.web.bind.annotation.*; +import java.io.IOException; + /** * 宇视告警书记上报 * @@ -32,8 +35,9 @@ public class VideoAlarmController { } @PostMapping("/huawei/callback") - public void huaweiAlarm(@RequestBody Object data) { - log.info("华为上报消息,msg={}", data); + public void huaweiAlarm(HttpServletRequest request) throws IOException { + int read = request.getInputStream().read(); + log.info("华为上报消息,msg={}", read); }