splice按大小切割数组 websocket分批传输

对接公司的工具箱时需要将大批量数据分配传输

工作场景

websocket不适合传大批量数据,所以需要分批send,比如将大量数据分割为最多20一批,也就是要将一个含有大量数据的数组按一定大小切分为多个满足条件的数组

解决方法

可以通过while搭配splice实现大批量数据的数组分割

例子:

1
2
3
4
5
6
7
8
9
10
11
// 以最大2个一批为例进行切割
const sum = [1, 2, 3, 4, 5]
const newArr = []
while (sum.length > 2) {
newArr.push(sum.splice(0, 2))
// 这里只是切割举例,需要websocket传值的在这可以对sum.splice(0, 2)进行send了
}
// 切割到最后剩下的不到2个的数据
newArr.push(sum)
// 这里只是切割举例,需要websocket传值的在这可以send最后一批数据sum了
console.log('newArr',newArr) // [ [1, 2], [3, 4], [5] ]

补充了解

WebSocket作为一种实时通信协议,通常用于在客户端和服务器之间传递小量的实时数据,比如聊天消息或实时更新。但是,由于其双向通信的特性,它也可以用于传输大批量的数据。然而,传输大批量数据时需要考虑一些因素:

  1. 性能问题: WebSocket通常被设计用于低延迟、高实时性的通信。如果你传输大批量数据,特别是在较慢的网络连接下,可能会影响性能和延迟

  2. 分批传输: 为了避免阻塞和性能问题,你可以将大批量数据拆分成较小的块,然后分批传输。这可以减轻网络压力,并且在接收端可以逐步处理数据。

  3. 压缩: 在传输大量数据时,可以考虑对数据进行压缩,以减少传输的数据量。这可以通过在服务器端进行压缩,然后在客户端进行解压缩来实现。

  4. 流式传输: 有些WebSocket库支持流式传输,这意味着可以在数据还在传输的同时就可以开始处理它。这在处理大批量数据时可能会有所帮助。

  5. 数据格式选择: 考虑选择合适的数据格式,如JSON、MessagePack等,以及适当的数据结构,以便在传输和处理大批量数据时更有效。

,