소스 검색

添加处理来自 /ws/device 连接的 DeviceHandler

reghao 5 달 전
부모
커밋
b0b51fcde1

+ 8 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/config/WebSocketConfig.java

@@ -17,13 +17,16 @@ public class WebSocketConfig implements WebSocketConfigurer {
     private final WebSocketInterceptor webSocketInterceptor;
     private final WebSocketHandler progressHandler;
     private final WebSocketHandler chatHandler;
+    private final WebSocketHandler deviceHandler;
 
     public WebSocketConfig(WebSocketInterceptor webSocketInterceptor,
                            @Qualifier("mediaHandler") WebSocketHandler progressHandler,
-                           @Qualifier("chatHandler") WebSocketHandler chatHandler) {
+                           @Qualifier("chatHandler") WebSocketHandler chatHandler,
+                           @Qualifier("deviceHandler") WebSocketHandler deviceHandler) {
         this.webSocketInterceptor = webSocketInterceptor;
         this.progressHandler = progressHandler;
         this.chatHandler = chatHandler;
+        this.deviceHandler = deviceHandler;
     }
 
     @Override
@@ -35,5 +38,9 @@ public class WebSocketConfig implements WebSocketConfigurer {
         registry.addHandler(chatHandler, WebSocketPath.wsChat)
                 .addInterceptors(webSocketInterceptor)
                 .setAllowedOrigins("*");
+
+        registry.addHandler(deviceHandler, WebSocketPath.wsDevice)
+                .addInterceptors(webSocketInterceptor)
+                .setAllowedOrigins("*");
     }
 }

+ 10 - 0
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/config/WebSocketInterceptor.java

@@ -47,6 +47,16 @@ public class WebSocketInterceptor implements HandshakeInterceptor {
 
                 log.error("connect to {} error", WebSocketPath.wsChat);
                 return false;
+            } else if (path.startsWith(WebSocketPath.wsDevice)) {
+                HttpServletRequest httpServletRequest = httpRequest.getServletRequest();
+                String deviceId = httpServletRequest.getParameter("deviceId");
+                if (deviceId != null) {
+                    attributes.put("deviceId", deviceId);
+                    return true;
+                }
+
+                log.error("connect to {} error", WebSocketPath.wsDevice);
+                return false;
             }
         }
 

+ 1 - 0
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/config/WebSocketPath.java

@@ -7,4 +7,5 @@ package cn.reghao.tnb.message.app.ws.config;
 public class WebSocketPath {
     public static String wsMedia = "/ws/media";
     public static String wsChat = "/ws/chat";
+    public static String wsDevice = "/ws/device";
 }