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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。