Spring Boot 2 - Webflux - Websocket - Netty - Sıkıştırma
kullanıyorum
- Spring-boot-starter-web 2.3.1
- yay-webflux 5.2.7
- yaylı önyükleme başlatıcı reaktör ağı 2.3.1
Sec-WebSocket-Extensions: permessage-deflateWebsockets yanıtlarında kullanmaya çalışıyorum . Netty, 507 numaralı düzeltmeden bu yana websocket açmayı destekliyor ( ilgili soru)
Ancak çalışmıyor (yani sunucu, permessage-deflateistek başlıklarında önerilenleri kullanmıyor )
Oysa iskele ile kullandığımda spring-boot-starter-jetty, kutudan çıktığı gibi çalışıyor, ekstra bir konfigürasyona gerek yok.
Bunu nasıl çözeceğini bilen var mı? Teşekkürler!
Yanıtlar
Yay webflux çerçevesine baktıktan sonra, reaktör ağında sıkıştırma varsayılan olarak devre dışı bırakılır. Aslında, sınıfın varsayılanReactorNettyRequestUpgradeStrategy oluşturucusu , varsayılan değerle (sıkıştırma = yanlış) WebsocketServerSpec sınıf parametresi değerinin bir örneğini oluşturur .
Reactor-netty , websocketClientSpec.compress()bir sıkıştırma desteği oluşturmak için koşulu kontrol eder .
Bu nedenle parametrenin websocketClientSpec.compressetkinleştirilmesi gerekir.
@Bean
public WebSocketHandlerAdapter handlerAdapter(WebSocketService webSocketService) {
return new WebSocketHandlerAdapter(webSocketService);
}
@Bean
public WebSocketService webSocketService() {
return new HandshakeWebSocketService(
new ReactorNettyRequestUpgradeStrategy(WebsocketServerSpec.builder().compress(true)));
}
Sonuç anlaşması: