WebAppConfiguration.java 2.25 KB
package com.bsth;

import com.bsth.websocket.WebSocketHandshakeInterceptor;
import com.bsth.websocket.handler.RealInoutSocketHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.HttpPutFormContentFilter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
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;

import javax.servlet.Filter;

@Configuration
@EnableWebSocket
@ComponentScan
public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebSocketConfigurer{
	
//	@Autowired
//	HttpOpLogInterceptor httpOpLogInterceptor;

	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	/**
	 * @Title: httpPutFormContentFilter 
	 * @Description: TODO(弥补浏览器不支持PUT/DELETE,对携带 _method 参数的请求进行转换) 
	 */
	@Bean
	public Filter httpPutFormContentFilter() {
		return new HttpPutFormContentFilter();
	}
	
	/**
	 * @Title: characterEncodingFilter 
	 * @Description: TODO(编码过滤器) 
	 */
	@Bean
	public Filter characterEncodingFilter(){
		return new CharacterEncodingFilter("UTF-8");
	}
	
	
	@Override
	public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
		//webSocket
		registry.addHandler(new RealInoutSocketHandler(), "/sockjs/inout").addInterceptors(new WebSocketHandshakeInterceptor())
        	.withSockJS();
	}

	/**
	 * 增加websocket的输出缓冲区
	 * @return
	 */
	@Bean
	public ServletServerContainerFactoryBean createServletServerContainerFactoryBean() {
		ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
		container.setMaxTextMessageBufferSize(52768);
		container.setMaxBinaryMessageBufferSize(52768);
		logger.info("Websocket factory returned");
		return container;
	}
}