當前位置:編程學習大全網 - 源碼下載 - gateway網關中netty的websocket設置數據內容大小

gateway網關中netty的websocket設置數據內容大小

微服務中用到websocket,如果傳輸或返回的數據過大則會斷開連接或者前端接收不到,在具體使用websocket的微服務中,我們可以用

session.setMaxTextMessageBufferSize(單位是字節);

或者

session.setMaxBinaryMessageBufferSize(單位是字節);

來設置數據大小的限制,這樣無論是接收數據還是返回數據都能搞定了

但是當我們要使用gateway來轉發websocket請求時就不壹樣了,gateway是使用netty的,所以websocket也是netty的,當websocket請求到網關的時候,網關會創建WebSocketService來轉發妳的請求,當具體微服務返回webSocket信息是,網關會創建ReactorNettyWebSocketClient來接收妳微服務的返回數據來給客戶端返回

所以網關中webSocket設置數據大小我們要分別設置服務端接收的大小和客戶端返回數據大小

@Bean

//如果有多個的WebSocketService註入到spring容器,優先使用這個

@Primary

public WebSocketService customWebSocketService() {

ReactorNettyRequestUpgradeStrategy requestUpgradeStrategy =new ReactorNettyRequestUpgradeStrategy();

requestUpgradeStrategy.setMaxFramePayloadLength(DEFAULT_FRAME_MAX_SIZE);

return new HandshakeWebSocketService(requestUpgradeStrategy);

}

/**

* 上面的bean是websocket服務端的,負責設置接收數據的大小

* 這個bean是websocket客戶端的,負責設置返回數據的大小

* @return

*/

@Bean

@Primary

public ReactorNettyWebSocketClient customReactorNettyWebSocketClient() {

ReactorNettyWebSocketClient reactorNettyWebSocketClient =new ReactorNettyWebSocketClient();

reactorNettyWebSocketClient.setMaxFramePayloadLength(DEFAULT_FRAME_MAX_SIZE);

return reactorNettyWebSocketClient;

}

DEFAULT_FRAME_MAX_SIZE自行設置

  • 上一篇:誰能列個霹靂英雄的所有系列名稱目錄
  • 下一篇:NBA季後賽歷史上有什麽隊伍在3比0落後翻盤的?
  • copyright 2024編程學習大全網