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

时间:2014-05-21 16:50:37

标签: javascript webrtc filereader

我有一个文件分块操作,它通过文件阅读器将文件分割成通过readAsArrayBuffer读取的片。我想在我的数据通道上一次发送一个块,附加元信息(例如,块ID)。像:

// Build chunk wrapper
var block = {
  chunkId: id,
  data: buffer
};

// Send the chunk to peer
channel.send(JSON.stringify(block));

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

我想知道如何使用关联的元信息发送数据,以便可以在另一端以正确的顺序重新组合文件块?

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

1 个答案:

答案 0 :(得分:1)

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