Browse Source

+ 去除已经关闭的session从sessionMap 中移除的bug

chen.cheng 6 months ago
parent
commit
7c81cac05f

+ 3 - 1
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mqtt/UWBLocationListener.java

@@ -1,5 +1,7 @@
 package com.huashe.park.application.mqtt;
 
+import java.nio.charset.StandardCharsets;
+
 import javax.annotation.PostConstruct;
 
 import org.slf4j.Logger;
@@ -11,8 +13,8 @@ import org.springframework.stereotype.Service;
 
 import com.alibaba.fastjson2.JSON;
 import com.huashe.park.application.engine.impl.VideoTrailEngine;
-import com.huashe.park.infrastructure.cfg.mqtt.MqttCfg;
 import com.huashe.park.common.consts.BDConst;
+import com.huashe.park.infrastructure.cfg.mqtt.MqttCfg;
 
 import net.dreamlu.iot.mqtt.codec.MqttQoS;
 import net.dreamlu.iot.mqtt.core.client.MqttClientCreator;

+ 2 - 1
bd-park/park-backend/park-common/src/main/java/com/huashe/park/common/websocket/SocketHandle.java

@@ -71,8 +71,9 @@ public abstract class SocketHandle extends AbstractWebSocketHandler implements I
     // 连接关闭时
     @Override
     public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+        String sessionKey = custSessionKey(session);
         super.afterConnectionClosed(session, status);
-        webSocketSessionMap.remove(session.getId());
+        webSocketSessionMap.remove(sessionKey);
         if (session.isOpen()) {
             try {
                 session.close();

+ 1 - 0
bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/socket/cfg/SessionHandshakeInterceptor.java

@@ -4,6 +4,7 @@ import org.springframework.http.server.ServerHttpRequest;
 import org.springframework.http.server.ServerHttpResponse;
 import org.springframework.http.server.ServletServerHttpRequest;
 import org.springframework.web.socket.WebSocketHandler;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
 import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;
 
 import javax.servlet.http.HttpServletRequest;