解决gateway转发websocket出现Max frame length of 65536 has been exceeded
项目版本:
gateway:3.0.2
springboot:2.4.6
背景:
对接阿里云tts,gateway转发websocket请求,在字节流超过65536时,连接自动断开,跟踪源码发现,WebsocketSpec限制了单次发送消息的最大字节数,目前还未找到动态配置的方法,如果有大神找到了欢迎告知
解决方案:
思路就是在项目启动完成后直接拿到ReactorNettyRequestUpgradeStrategy和ReactorNettyWebSocketClient,把里面的maxFramePayloadLength,也就是最大帧有效负载长度,通过反射改为想要的长度,代码:
```java
@Component
public class GatewayRunner implements ApplicationRunner, ApplicationContextAware {@Value("${websocket.maxFramePayloadLength}")private Integer maxFramePayloadLength;private ApplicationContext applicationContext;@Overridepublic void run(ApplicationArguments args) throws Exception {Assert.notNull(maxFramePayloadLength, "maxFramePayloadLength Cannot be empty");ReactorNettyRequestUpgradeStrategy bean = applicationContext.getBean(ReactorNettyRequestUpgradeStrategy.class);Class<? extends ReactorNettyRequestUpgradeStrategy> aClass = bean.getClass();Field field = aClass.getDeclaredField("maxFramePayloadLength");field.setAccessible(true);field.set(bean, maxFramePayloadLength);ReactorNettyWebSocketClient bean1 = applicationContext.getBean(ReactorNettyWebSocketClient.class);Class<? extends ReactorNettyWebSocketClient> aClass1 = bean1.getClass();Field field1 = aClass1.getDeclaredField("maxFramePayloadLength");field1.setAccessible(true);field1.set(bean1, maxFramePayloadLength);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}
}
解决gateway转发websocket出现Max frame length of 65536 has been exceeded相关推荐
- Spring cloud网关gateway代理websocket报Max frame length of 65536 has been exceeded
Spring cloud网关gateway代理websocket报io.netty.handler.codec.http.websocketx.CorruptedWebSocketFrameExcep ...
- netty : Max frame length of 65536 has been exceeded.
文章目录 1. 背景 解决 1. 背景 netty刚刚学的,一个聊天室程序 界面如下: 代码如下: package com.myself.nettychat.config;
- gateway 转发weboskct 报错 ClassCastException
使用环境: springcloud gateway 转发 websocket 报错 报错内容: 15:30:38.092 [http-nio-9999-exec-1] ERROR c.m.g.e.Gl ...
- sqlalchemy Specified key was too long; max key length is 767 bytes的解决办法
sqlalchemy出现以下错误: sqlalchemy Specified key was too long; max key length is 767 bytes 原因 字符集设成了utf8mb ...
- MySQL5.6建索引时遇到 Specified key was too long; max key length is 767 bytes错误提示解决办法
一.错误提示 Specified key was too long; max key length is 767 bytes: 二.原因分析 在数据库中,索引的字段设置太长了,导致不支持.[根本原因: ...
- 一招解决MySql Specified key was too long; max key length is 767 bytes
背景 今天迁移环境上阿里云的DMS建表 CREATE TABLE `xxl_job_registry` ( `id` int(11) NOT NULL AUTO_INCREMENT, `reg ...
- Adjusted frame length exceeds 4096: 5637 - discarded 服务端解决
解决服务端Adjusted frame length exceeds 4096: 5637 - discarded问题 1. 具体错误 2. 错误原因 2.1 长度格式问题 2.2 长度大小问题 3. ...
- hive的Specified key was too long; max key length is 767 bytes问题解决
把hive 的metadata配置成mysql,执行命令时报以下错误 hive> show tables; FAILED: Error in metadata: MetaException(me ...
- hive 1.1.1 Specified key was too long; max key length is 767 bytes
错误 hive> create table shop(locationid int,name string,cnname string) row format delimited fields ...
最新文章
- mixamo网站FBX模型带骨骼绑定动作库
- 元素多层嵌套,JS获取问题
- python的前端怎么实现_Bootstrap、Python、Flask 做简单的前端
- scrum敏捷开发工具实践分享
- 一文读懂JDK7,8,JD9的HashMap,HashTable,ConcurrentHashMap及他们的区别
- mysql冷备增量备份,MySQL备份与恢复之真实环境使用冷备(2)
- [转载]Android Layout标签之-viewStub,requestFocus,merge,include
- 甲骨文因超过90亿美元的NetSuite交易起诉Larry Ellison和CEO Safra Catz
- Shell script 笔记
- 周长相等的正方形面积一定相等_周长和面积一直是三年级孩子的易失分点,家长要把好关!...
- 职场动物进化手册-读后感
- 在pc计算机vga是什么意思,电脑上的VGA线是什么样的?图片
- 指数解读:恒生指数(Hang Seng Indexes)
- 抛弃光驱,让你的U盘变光驱,制作USB-CDROM,用U盘安装系统
- 天行健,君子以自强不息;地势坤,君子以厚德载物的解释
- 手机邮箱中的邮件里的链接的打开方式/app更改方法
- App地推营销成为趋势,破局增长数据赋能是关键
- Java程序员必修内功心法!(内功修炼第三层)
- 微信开发(三)创建菜单
- 第十章 DCEP简介