문제 설명 :
springboot 상속 WebSocketConfigurer 웹 소켓 통신 서비스, 서버 오류를 달성, "디코딩 된 문자 메시지는 출력 버퍼 너무 커서 및 엔드 포인트 부분 메시지를 지원하지 않습니다", 서버의 세션이 종료 된 브라우저 표시. 1009 오류, 오버런 콘텐츠 길이.
문제 해결
주석 텍스트 및 바이너리 메시지가 제공하는 크기 클래스 분사 개시 통신의 응용 프로그램.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
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;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyHandler myHandler;
/**
* sockJs 低版本浏览器不支持webSocket时使用
* url结构:http://host:port/{endpoint}/{server-id}/{session-id}/websocket
* 也可以: ws://host:port/{endpoint}/websocket
* <p>
* 不使用sockJs 访问时 url: ws://host:port/{endpoint}
* <p>
* setClientLibraryUrl 兼容客户端sockJs版本
*/
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler, "/myHandler").setAllowedOrigins("*");
registry.addHandler(myHandler, "/myHandler").setAllowedOrigins("*").withSockJS()
.setTaskScheduler(sockJsScheduler()).setClientLibraryUrl("//cdn.jsdelivr.net/sockjs/1/sockjs.min.js");
}
@Bean
public ServletServerContainerFactoryBean createWebSocketContainer() {
ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
// ws 传输数据的时候,数据过大有时候会接收不到,所以在此处设置bufferSize
container.setMaxTextMessageBufferSize(512000);
container.setMaxBinaryMessageBufferSize(512000);
container.setMaxSessionIdleTimeout(15 * 60000L);
return container;
}
}