通过WebRTC数据通道发送带有元数据的文件块

Sending a file chunk WITH meta data over a WebRTC Data Channel

本文关键字:元数据 文件 WebRTC 数据通道 通过      更新时间:2023-09-26

我有一个文件分块操作,通过文件阅读器将文件分成通过readAsArrayBuffer读取的片。我想发送这些块在一个时间在我的数据通道与元信息附加(一个块id,例如)。如:

// Build chunk wrapper
var block = {
  chunkId: id,
  data: buffer
};
// Send the chunk to peer
channel.send(JSON.stringify(block));

现在,当我发送上述数据时,ArrayBuffer buffer中的数据丢失了。我想强调一下,通过我的数据通道发送数据没有任何问题。

我想知道我如何发送数据与相关的元信息,以便文件块可以在另一边以正确的顺序重新组装?

我是否需要做一些像做一个ArrayBuffer与两个子数组,一个与元信息,另一个与实际数据或有一个更简单的方法?

有很多方法可以解决这个问题,但基本上你需要序列化,编码和反序列化,解码你的数据。
如果你想把你的元数据和数据一起发送,你需要将它们序列化为uint8array或字符串,并在接收端进行反向操作。例如,sharetest使用TLV协议:https://github.com/Peer5/ShareFest/blob/master/core/protocol/BinaryProtocol.js