WebSocket客户端接收大数据量数据效率慢问题解决

项目场景:

对接其他厂家的一个WebSocket服务。我们这里是WebSocket客户端,对方是WebSocket服务端。当客户端连接到服务端后,发送相应的参数到服务端,服务端就会往客户端返回数据。

问题描述:

当服务端不停的往回返回数据时,且每次返回的数据量都很大时,造成客户端处理数据不及时,不能实时的处理掉服务端返回的数据。

原因分析:

客户端处理接收到的消息,用的java客户端处理的,也就是在handleMessage()方法中处理,此方法的调用是单线程的。也就是说,服务端第一次返回数据时,客户端调用了handleMessage方法,来解析数据。如果handleMessage方法解析数据特别慢,等服务端第二次返回数据时,第一次的数据还没解析完,那么第二次调用handleMessage方法就会阻塞,等待第一次handleMessage执行完后,才会调用第二次的。所以,造成了数据越积越多,不能实时处理的问题

解决方案:

在handleMessage方法中,用线程池多线程解析数据,异步解析,这样handleMessage方法就不会阻塞了。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码的小小酥

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值