[SPRING] Spring STOMP Websockets : 서버 쪽에서 퍼센티지 축소를 가능하게하는 방법은 무엇입니까?
SPRINGSpring STOMP Websockets : 서버 쪽에서 퍼센티지 축소를 가능하게하는 방법은 무엇입니까?
Spring-boot-starter 1.3.1.RELEASE에서 Jetty 백엔드와 함께 spring-websockets로 작업하고 있습니다. 나는 서버에서 permessage-deflate를 활성화하는 방법에 대해 궁금합니다.
압축을 협상 할 수있는 Firefox 버전에서 호스팅되는 클라이언트가 있습니다. 즉, WebSocket 끝점에 대한 초기 핸드 셰이크에 압축 협상 헤더가 포함됩니다.
GET https://my-websocket-host/my-endpoint
...
Sec-WebSocket-Protocol: v10.stomp,v11.stomp
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: ...
...
, 서버 응답은 업그레이드 응답에 영구 압축 해제 확장 헤더를 포함하지 않으므로 압축을 협상하지 않을 것입니다. 이 구성에서 활성화 할 수있는 곳을 찾았지만 아무 것도 발견하지 못했습니다. 이 기능을 사용하기 위해 사용할 수있는 API가 있습니까? 아니면 현재 제품에서 지원되지 않습니다.
매우 감사합니다,
스티브
해결법
-
==============================
1.이 확장 기능은 기본적으로 등록되어 있지 않으므로이 기능은 Jetty에서 사용하도록 설정해야합니다. Spring은 핸드 쉐이크 핸들러를 설정하고 그 확장을 가능하게하는 방법을 제공한다.
이 확장 기능은 기본적으로 등록되어 있지 않으므로이 기능은 Jetty에서 사용하도록 설정해야합니다. Spring은 핸드 쉐이크 핸들러를 설정하고 그 확장을 가능하게하는 방법을 제공한다.
이 원칙은 websocket 서버 설정에 대한 참고 문서에서 설명하지만 다음은 완전한 예입니다.
@Configuration @EnableWebSocket public class SampleJettyWebSocketsApplication implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { // make sure to use the handshake handler we've defined registry.addHandler(echoWebSocketHandler(), "/echo") .setHandshakeHandler(handshakeHandler()).withSockJS(); } @Bean public DefaultHandshakeHandler handshakeHandler() { WebSocketServerFactory factory = new WebSocketServerFactory(); // add the "permessage-compress" Websocket extension factory.getExtensionFactory() .register("permessage-compress", PerMessageDeflateExtension.class); return new DefaultHandshakeHandler(new JettyRequestUpgradeStrategy(factory)); }
from https://stackoverflow.com/questions/35347077/spring-stomp-websockets-any-way-to-enable-permessage-deflate-on-server-side by cc-by-sa and MIT license