Bladeren bron

feat:小节评分

Joburgess 4 jaren geleden
bovenliggende
commit
ada6be00ae

+ 4 - 4
mec-teacher/pom.xml

@@ -30,10 +30,10 @@
 			<artifactId>spring-cloud-starter-security</artifactId>
 		</dependency>
 
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-sleuth-zipkin</artifactId>
-		</dependency>
+<!--		<dependency>-->
+<!--			<groupId>org.springframework.cloud</groupId>-->
+<!--			<artifactId>spring-cloud-sleuth-zipkin</artifactId>-->
+<!--		</dependency>-->
 
 		<dependency>
 			<groupId>org.springframework.boot</groupId>

+ 0 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/config/WebSocketConfig.java

@@ -21,8 +21,6 @@ import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerCo
 public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
 
     @Autowired
-    private SoundHandler soundHandler;
-    @Autowired
     private WebSocketHandshakeInterceptor webSocketHandshakeInterceptor;
 
     @Override

+ 0 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/SoundController.java

@@ -72,7 +72,6 @@ public class SoundController extends BaseController {
     @RequestMapping("sendToUser")
     public HttpResponseResult sendToUser(String phone, String message){
         template.convertAndSendToUser(phone, "/topic/greetings", message);
-        template.convertAndSend("/topic/greetings", message);
         return succeed();
     }
 

+ 63 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/handler/CustomSubProtocolWebSocketHandler.java

@@ -0,0 +1,63 @@
+package com.ym.mec.teacher.handler;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.teacher.interceptor.WebSocketChannelInterceptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.messaging.SubscribableChannel;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.messaging.SubProtocolWebSocketHandler;
+
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/6/15 0015
+ */
+public class CustomSubProtocolWebSocketHandler extends SubProtocolWebSocketHandler {
+
+    private final Logger LOGGER = LoggerFactory.getLogger(SubProtocolWebSocketHandler.class);
+
+    /**
+     * Create a new {@code SubProtocolWebSocketHandler} for the given inbound and outbound channels.
+     * @param clientInboundChannel the inbound {@code MessageChannel}
+     * @param clientOutboundChannel the outbound {@code MessageChannel}
+     */
+    public CustomSubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel) {
+        super(clientInboundChannel, clientOutboundChannel);
+    }
+
+    /**
+     * 建立连接成功之后执行的方法
+     * @param session 处理器
+     * @throws Exception 异常
+     */
+    @Override
+    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+        LOGGER.info("afterConnectionEstablished: connection established -- session --> {}", session);
+        if (Objects.isNull(session) || Objects.isNull(session.getPrincipal())) {
+            LOGGER.warn("afterConnectionEstablished: session is null or user is null -- session --> {}", session);
+            return;
+        }
+        Map<String, Object> attributes = session.getAttributes();
+        String sessionId = session.getId();
+        LOGGER.info("afterConnectionEstablished: attributes -->{}, sessionId --> {}", JSONObject.toJSONString(attributes), session);
+        attributes.put("clientId", sessionId);
+        super.afterConnectionEstablished(session);
+    }
+
+    /**
+     * 在关闭连接之后调用
+     * @param session WebSocket处理器
+     * @param closeStatus 状态
+     * @throws Exception 异常
+     */
+    @Override
+    public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
+        LOGGER.info("afterConnectionClosed: close -- closeStatus --> {}", closeStatus);
+        super.afterConnectionClosed(session, closeStatus);
+    }
+}

+ 2 - 5
mec-teacher/src/main/java/com/ym/mec/teacher/interceptor/WebSocketChannelInterceptor.java

@@ -34,12 +34,9 @@ public class WebSocketChannelInterceptor implements ChannelInterceptor {
          * 判断是否首次连接请求, 如果已经连接, 返回message
          */
         if (StompCommand.CONNECT.equals(stompHeader.getCommand())) {//首次连接
-            List<String> tokens = stompHeader.getNativeHeader("Authorization");//获取TOKEN
-            LOGGER.info("preSend: stompHeader.getNativeHeader tokens --> {}", tokens);
-            String token = Optional.ofNullable(tokens).map(tokenList -> tokenList.get(0)).orElse(null);
-            LOGGER.info("preSend: token --> {}", token);
+            LOGGER.info("preSend: {} connected", stompHeader.getUser().getName());
         } else if (StompCommand.DISCONNECT.equals(stompHeader.getCommand())) {//断开连接
-            LOGGER.info("preSend: {} close connect", stompHeader.getUser());
+            LOGGER.info("preSend: {} close connect", stompHeader.getUser().getName());
         }
         return message;
     }

+ 2 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/interceptor/WebSocketHandshakeInterceptor.java

@@ -14,6 +14,7 @@ import java.util.Map;
  */
 @Component
 public class WebSocketHandshakeInterceptor implements HandshakeInterceptor {
+
     @Override
     public boolean beforeHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object> map) throws Exception {
         return true;
@@ -23,4 +24,5 @@ public class WebSocketHandshakeInterceptor implements HandshakeInterceptor {
     public void afterHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Exception e) {
 
     }
+
 }