gateway网关中netty的websocket设置数据内容大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gateway网关中netty的websocket设置数据内容大小相关的知识,希望对你有一定的参考价值。
参考技术A 微服务中用到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自行设置
以上是关于gateway网关中netty的websocket设置数据内容大小的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Gateway中netty线程池优化
基础技术技术分享系列二:基于Netty的Tesla Gateway