복붙노트

[SPRING] Spring STOMP Websockets : 서버 쪽에서 퍼센티지 축소를 가능하게하는 방법은 무엇입니까?

SPRING

Spring 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. ==============================

    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));
        }
    
  2. 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