WebAppConfiguration.java 2.21 KB
package com.bsth;

import com.bsth.filter.ResourceFilter;
import com.bsth.websocket.WebSocketHandshakeInterceptor;
import com.bsth.websocket.handler.RealControlSocketHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.FormContentFilter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
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 javax.servlet.Filter;

/**
 * @author Hill
 */
@Configuration
@EnableWebSocket
@ComponentScan
public class WebAppConfiguration implements WebSocketConfigurer, WebMvcConfigurer {

	/**
	 * @Title: httpPutFormContentFilter 
	 * @Description: TODO(弥补浏览器不支持PUT/DELETE,对携带 _method 参数的请求进行转换) 
	 */
	@Bean
	public Filter httpPutFormContentFilter() {
		return new FormContentFilter();
	}
	
	/**
	 * @Title: characterEncodingFilter 
	 * @Description: TODO(编码过滤器) 
	 */
	/*@Bean
	public Filter characterEncodingFilter(){
		return new CharacterEncodingFilter("UTF-8");
	}*/
	
	/**
	 * 
	 * @Title: resourceFilterRegistration 
	 * @Description: TODO(静态资源过滤器, 只处理 /pages 目录下的片段请求 ) 
	*/
	@Bean
	public FilterRegistrationBean resourceFilterRegistration(){
		FilterRegistrationBean registration = new FilterRegistrationBean();
		registration.setFilter(new ResourceFilter());
		registration.addUrlPatterns("/pages/*");
		return registration;
	}
	
	@Override
	public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
		//线调webSocket
		registry.addHandler(new RealControlSocketHandler(), "/sockjs/realcontrol").addInterceptors(new WebSocketHandshakeInterceptor())
        	.withSockJS();
	}
}