发现
场景:使用WebSocket传输长JSON时,数据没有经过业务,直接触发WebSocket的OnClose方法。经测试,是传输数据过长导致,且不会提示任何错误。
传输大数据,如图片音频的base64编码,也容易遇到这个问题。
解决
解决方法有两种:
web.xml:
<context-param>
<param-name>org.apache.tomcat.websocket.textBufferSize</param-name>
<param-value>10000000</param-value>
</context-param>
SpringBoot工程:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class TomcatConfg implements ServletContextInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
System.out.println("org.apache.tomcat.websocket.textBufferSize");
servletContext.addListener(WebAppRootListener.class);
servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize","1024000");
}
}