Prechádzať zdrojové kódy

websocket清楚缓存

sunkean 3 rokov pred
rodič
commit
31f181aae4

+ 1 - 0
src/main/java/com/izouma/nineth/security/WebSecurityConfig.java

@@ -167,6 +167,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/asset/topTen").permitAll()
                 .antMatchers("/metaUser/internalTest").permitAll()
                 .antMatchers("/metaShowRoomAsset/**").permitAll()
+                .antMatchers("/metaCacheable/clearMMO").permitAll()
                 .antMatchers("/u951658VPf.txt").permitAll()
                 .antMatchers("/u9s1658vPf.txt").permitAll()
                 // all other requests need to be authenticated

+ 21 - 0
src/main/java/com/izouma/nineth/web/MetaCacheable.java

@@ -0,0 +1,21 @@
+package com.izouma.nineth.web;
+
+import com.izouma.nineth.dto.MetaRestResult;
+import com.izouma.nineth.websocket.WebSocket;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/metaCacheable")
+@AllArgsConstructor
+public class MetaCacheable {
+
+    private WebSocket webSocket;
+
+    @PostMapping("/clearMMO")
+    public MetaRestResult clearMMO(String userId, String regionId, String cityId) {
+        return webSocket.clearMMO(userId, regionId, cityId);
+    }
+}

+ 15 - 1
src/main/java/com/izouma/nineth/websocket/WebSocket.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.izouma.nineth.domain.MetaMMOLoginInfo;
 import com.izouma.nineth.dto.MMOMessage;
 import com.izouma.nineth.dto.MMOSingleMessage;
+import com.izouma.nineth.dto.MetaRestResult;
 import com.izouma.nineth.dto.MetaServiceResult;
 import com.izouma.nineth.repo.MetaMMOLoginInfoRepo;
 import com.izouma.nineth.utils.ApplicationContextUtil;
@@ -29,7 +30,7 @@ import java.util.stream.Collectors;
 @Service
 @ServerEndpoint(value = "/websocket/mmo/{nickName}/{userId}")
 @Slf4j
-public class WebSocket extends WebsocketCommon{
+public class WebSocket extends WebsocketCommon {
 
     /**
      * 当前在线的客户端map
@@ -393,4 +394,17 @@ public class WebSocket extends WebsocketCommon{
         }
         return otherUserIds;
     }
+
+    public MetaRestResult clearMMO(String userId, String regionId, String cityId) {
+        init();
+        if (clients.containsKey(REDIS_PREFIX.concat(userId))) {
+            String errMsg = String.format("userId[%S]用户mmo连接正常,无法清除缓存!", userId);
+            log.info(errMsg);
+            return MetaRestResult.returnError(errMsg);
+        }
+        String key = cityId.concat(":").concat(regionId);
+        redisTemplate.delete(REDIS_PREFIX.concat(userId));
+        redisTemplate.opsForList().remove(REDIS_PREFIX.concat(key), 0, REDIS_PREFIX.concat(userId));
+        return MetaRestResult.returnSuccess("清除成功");
+    }
 }