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

Posted 敲代码的小小酥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebSocket客户端接收大数据量数据效率慢问题解决相关的知识,希望对你有一定的参考价值。

项目场景:

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

问题描述:

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

原因分析:

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

解决方案:

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

以上是关于WebSocket客户端接收大数据量数据效率慢问题解决的主要内容,如果未能解决你的问题,请参考以下文章

我想问一下神通广大的各位网友,为啥我前端使用websocket通信的时候后台可以接收到我客户端发送的消息?

MyBatis Plus 解决大数据量查询慢问题

websocket client怎样维持心跳,有没有具体的栗子

MySQL删除千万级数据量导致的慢查询优化

记一次WebSocket的MaxTextMessageBufferSize值设置过大引发的问题

MERGE INTO 解决大数据量 10w 更新缓慢的问题