我有一个文件分块操作,它通过文件阅读器将文件分割成通过readAsArrayBuffer
读取的片。我想在我的数据通道上一次发送一个块,附加元信息(例如,块ID)。像:
// Build chunk wrapper
var block = {
chunkId: id,
data: buffer
};
// Send the chunk to peer
channel.send(JSON.stringify(block));
现在当我发送数据时,如上所示,ArrayBuffer buffer
中的数据丢失了。我想强调一下,通过我的数据通道发送数据没有任何问题。
我想知道如何使用关联的元信息发送数据,以便可以在另一端以正确的顺序重新组合文件块?
我是否需要做一些像生成具有两个子数组的ArrayBuffer,一个包含元信息,另一个包含实际数据或者是否有更简单的方法?
答案 0 :(得分:1)
有很多方法可以解决这个问题,但基本上你需要序列化,编码和反序列化,解码数据。
如果要使用数据发送元数据,则需要将序列化为uint8array或字符串,并在接收器端执行反向操作。
例如,Sharefest使用TLV协议:https://github.com/Peer5/ShareFest/blob/master/core/protocol/BinaryProtocol.js