Spring STOMP Websockets: any way to enable permessage-deflate on server side?

好久不见. 提交于 2019-11-30 23:35:00

This feature needs to be enabled in Jetty itself, as I believe this extension is not registered by default. Spring provides a way to configure the handshake handler and enable that extension.

The principle is explained in the reference documentation on websocket server configuration, but here's a complete example:

@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));
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!