स्प्रिंग बूट 2 - वेबफ्लक्स - वेबसोकेट - नेट्टी - संपीड़न
मैं उपयोग कर रहा हूँ
- वसंत-बूट-स्टार्टर-वेब 2.3.1
- वसंत-वेबफ्लक्स 5.2.7
- वसंत-बूट-स्टार्टर-रिएक्टर-नेट्टी 2.3.1
मैं Sec-WebSocket-Extensions: permessage-deflate
websockets प्रतिक्रियाओं पर उपयोग करने की कोशिश कर रहा हूँ । नेट्टी 507 ( संबंधित प्रश्न) को ठीक करने के बाद से वेबसोकेट विघटन का समर्थन करता है
लेकिन यह काम नहीं करता है (यानी, सर्वर permessage-deflate
अनुरोध हेडर में प्रस्तावित का उपयोग नहीं करता है )
जबकि जब मैं का उपयोग घाट के साथ spring-boot-starter-jetty
, यह बॉक्स से बाहर काम करता है, बिना किसी अतिरिक्त विन्यास की जरूरत है।
किसी को पता है कि यह कैसे हल करने के लिए? धन्यवाद!
जवाब
वसंत-वेबफ्लक्स ढांचे को देखने के बाद, रिएक्टर-नेट्टी में डिफ़ॉल्ट रूप से संपीड़न को अक्षम कर दिया जाता है। दरअसल डिफ़ॉल्ट 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)));
}
परिणाम हाथ मिलाना:
