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自行設置