我使用jetty9.4.26和--module=gzip来启用我所有服务器应用程序的压缩(不是字符串)到WebSocket客户端(很小,但每个客户端每秒几十条消息),而且我不确定是否对每个WebSocket消息应用了压缩正如我注意到CPU使用率几乎增加了一倍(我没有消除每一种可能性,但这是我唯一改变的可能影响CPU的东西)。如果是这样,有没有办法只为websockets禁用gzip?
qojgxg4l1#
WebSocket消息的压缩是通过websocket会话本身的permessage-deflate扩展完成的。参见:https://stackoverflow.com/a/19300336/775715HTTP gzip压缩(这是--module=gzip所支持的)是完全不相关的。请记住,WebSocket是对websocket的HTTP升级,一旦升级到WebSocket,HTTP HTTP行为就不再起作用了。
permessage-deflate
--module=gzip
n6lpvg4x2#
如果您使用Jetty项目this link帮助。
WebSocketUpgradeFilter wsuf = WebSocketUpgradeFilter.configureContext(context); wsuf.getFactory().getExtensionFactory().unregister("permessage-deflate");
如果你使用Spring框架,请参考this link:
@Bean public JettyServletWebServerFactory jettyServletWebServerFactory() { JettyServletWebServerFactory factory = new JettyServletWebServerFactory(); factory.addServerCustomizers(server -> { GzipHandler gzipHandler = new GzipHandler(); gzipHandler.setInflateBufferSize(1); gzipHandler.setHandler(server.getHandler()); HandlerCollection handlerCollection = new HandlerCollection(gzipHandler); server.setHandler(handlerCollection); }); return factory; }
2条答案
按热度按时间qojgxg4l1#
WebSocket消息的压缩是通过websocket会话本身的
permessage-deflate
扩展完成的。参见:https://stackoverflow.com/a/19300336/775715
HTTP gzip压缩(这是
--module=gzip
所支持的)是完全不相关的。请记住,WebSocket是对websocket的HTTP升级,一旦升级到WebSocket,HTTP HTTP行为就不再起作用了。
n6lpvg4x2#
如果您使用Jetty项目this link帮助。
如果你使用Spring框架,请参考this link: