Websocket设置缓冲区大小,解决大报文异常问题

前段时间整合websocket时,发现一个问题,客户端推送消息,服务器时而收到时而收不到,并且不抛异常,问题让我百思不得其解。后来仔细排查,当把图片转换为十六进制字节再发送到服务器时,服务器便收不到消息了,传输其他文本正常如初。此时情不自禁联系到,是否消息过长导致服务器接收不到呢。

后来设置了tomcat的缓存大小,问题依然存在。然后测试了一下用ajax传输图片十六进制字节到后台,奇怪的是后台服务器能够正常接收,那为什么websocket传输就有问题了呢,此时猜想,问题肯定出在websocket身上。

后来上网查找websocket内存的资料,相关的信息并不多,最后咨询了一个做通讯的朋友,原来,服务器的websocket接收缓存不足时,websocket会自行断开后重新连接,因此服务器需要调整缓冲区大小。得知答案,现在与大家分享。

对策:
我们只需要在web.xml配置文件中设置缓冲区大小即可:

<!-- 该属性设置缓冲区大小,默认是8192bytes(8KB),自己设置时以字节为单位-->
<context-param>
    <param-name>org.apache.tomcat.websocket.textBufferSize</param-name>
    <param-value>5242800</param-value>
</context-param>



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踮脚敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值