स्प्रिंग बूट 2 - वेबफ्लक्स - वेबसोकेट - नेट्टी - संपीड़न

Dec 04 2020

मैं उपयोग कर रहा हूँ

  • वसंत-बूट-स्टार्टर-वेब 2.3.1
  • वसंत-वेबफ्लक्स 5.2.7
  • वसंत-बूट-स्टार्टर-रिएक्टर-नेट्टी 2.3.1

मैं Sec-WebSocket-Extensions: permessage-deflatewebsockets प्रतिक्रियाओं पर उपयोग करने की कोशिश कर रहा हूँ । नेट्टी 507 ( संबंधित प्रश्न) को ठीक करने के बाद से वेबसोकेट विघटन का समर्थन करता है

लेकिन यह काम नहीं करता है (यानी, सर्वर permessage-deflateअनुरोध हेडर में प्रस्तावित का उपयोग नहीं करता है )

जबकि जब मैं का उपयोग घाट के साथ spring-boot-starter-jetty, यह बॉक्स से बाहर काम करता है, बिना किसी अतिरिक्त विन्यास की जरूरत है।

किसी को पता है कि यह कैसे हल करने के लिए? धन्यवाद!

जवाब

AndrianekenaMoise Jan 06 2021 at 23:33

वसंत-वेबफ्लक्स ढांचे को देखने के बाद, रिएक्टर-नेट्टी में डिफ़ॉल्ट रूप से संपीड़न को अक्षम कर दिया जाता है। दरअसल डिफ़ॉल्ट contructor वर्ग के ReactorNettyRequestUpgradeStrategyवर्ग पैरामीटर मान का एक उदाहरण बनाने के डिफ़ॉल्ट मान के साथ WebsocketServerSpec (संपीड़न = false)।

रिएक्टर-नेट्टीwebsocketClientSpec.compress() एक संपीड़न समर्थन स्थापित करने के लिए विधेय की जाँच करें ।

इसलिए पैरामीटर websocketClientSpec.compressको सक्रिय करने की आवश्यकता है।

@Bean
public WebSocketHandlerAdapter handlerAdapter(WebSocketService webSocketService) {
return new WebSocketHandlerAdapter(webSocketService);
}
@Bean
public WebSocketService webSocketService() {
return new HandshakeWebSocketService(
new ReactorNettyRequestUpgradeStrategy(WebsocketServerSpec.builder().compress(true)));
}

परिणाम हाथ मिलाना: