| 
					
				 | 
			
			
				@@ -1,60 +1,40 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.teacher.config; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.teacher.handler.CustomPrincipalHandshakeHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.teacher.handler.SoundHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.teacher.interceptor.WebSocketChannelInterceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.teacher.handler.WebSocketHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.teacher.interceptor.WebSocketHandshakeInterceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.context.annotation.Bean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.context.annotation.Configuration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.messaging.simp.config.ChannelRegistration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.messaging.simp.config.MessageBrokerRegistry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.socket.config.annotation.StompEndpointRegistry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.socket.config.annotation.EnableWebSocket; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @Author Joburgess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @Date 2021/6/8 0008 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@EnableWebSocketMessageBroker 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@EnableWebSocket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSocketConfig implements WebSocketConfigurer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private WebSocketHandler webSocketHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private WebSocketHandshakeInterceptor webSocketHandshakeInterceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void registerStompEndpoints(StompEndpointRegistry registry) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        registry.addEndpoint("/soundWebSocket") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .addInterceptors(webSocketHandshakeInterceptor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .setHandshakeHandler(new CustomPrincipalHandshakeHandler()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .setAllowedOrigins("*"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        webSocketHandlerRegistry.addHandler(webSocketHandler, "/ws") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .addInterceptors(webSocketHandshakeInterceptor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void configureMessageBroker(MessageBrokerRegistry config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // prefix for subscribe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        config.enableSimpleBroker("/topic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // prefix for send 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        config.setApplicationDestinationPrefixes("/push"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ServletServerContainerFactoryBean createWebSocketContainer() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        container.setMaxTextMessageBufferSize(8192*4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        container.setMaxBinaryMessageBufferSize(8192*4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return container; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void configureClientInboundChannel(ChannelRegistration registration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         * 配置消息线程池 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         * 1、corePoolSize() 配置核心线程池, 当线程数小于此配置时, 不管线程中有无空闲的线程, 都会产生新线程处理任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         * 2、maxPoolSize() 配置线程池最大数, 当线程池等于此配置时, 不会产生新线程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         * 3、keepAliveSeconds() 线程池维护线程所允许的空闲时间, 单位为秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        registration.taskExecutor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .corePoolSize(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .maxPoolSize(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .keepAliveSeconds(60); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         * 添加STOMP自定义拦截器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         * 消息拦截器, 实现ChannelInterceptor接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        registration.interceptors(new WebSocketChannelInterceptor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |