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

项目场景:

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

问题描述:

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

原因分析:

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

解决方案:

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
WebSocket 协议是一种双向通信协议,它允许客户端和服务器之间进行实时的数据传输。相比传统的 HTTP 协议,WebSocket 协议的优势在于它能够保持长连接,避免了频繁地建立和关闭连接,从而提高了数据传输效率。 如果想要使用轻WebSocket 协议来提高数据传输效率,可以遵循下面的步骤: 1. 选择一个合适的 WebSocket 库:有很多 WebSocket 库可供选择,如 Socket.IO, ws, uWebSockets 等。这些库都提供了简单易用的 API,方便你快速开发 WebSocket 应用。 2. 建立 WebSocket 连接:在客户端和服务器之间建立 WebSocket 连接需要进行握手。客户端发送一个 HTTP 请求给服务器,请求头中包含 Upgrade 和 Connection 字段,表示要升级协议为 WebSocket。如果服务器同意升级,则返回 101 状态码,表示握手成功,之后客户端和服务器之间就可以通过 WebSocket 通信了。 3. 发送数据客户端和服务器之间可以通过 WebSocket 发送文本或二进制数据。发送数据时,需要将数据打包成 WebSocket 数据帧,并加上相应的控制码和数据长度等信息,然后发送给对方。 4. 接收数据客户端和服务器都可以通过 WebSocket 接收文本或二进制数据接收数据时,需要对 WebSocket 数据帧进行解包,提取出数据部分,并根据控制码进行相应的处理。 总之,使用 WebSocket 协议可以有效地提高数据传输效率,特别是在实时通信场景下,能够实现低延迟、高可靠的数据传输。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码的小小酥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值