Spring Boot 2 - Webflux - Websocket - Netty - Sıkıştırma

Dec 04 2020

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

AndrianekenaMoise Jan 06 2021 at 23:33

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ı: