我正在用WebRTC和Node.js构建一个文件共享应用程序。它是一个命令行应用程序,所以不会有任何HTML调用。我将以流的形式读取文件并发送,然后在接收端下载文件。以下是我将如何编写发送方的代码。
// code taken from https://github.com/coding-with-chaim/file-transfer-
// final/blob/master/client/src/routes/Room.js
const reader = stream.getReader();
reader.read().then(obj => {
handlereading(obj.done, obj.value);
});
// recursive function for sending out chunks of stream
function handlereading(done, value) {
if (done) {
peer.write(JSON.stringify({ done: true, fileName: file.name }));
return;
}
peer.write(value);
reader.read().then(obj => {
handlereading(obj.done, obj.value);
})
}
在receever端我要把传入的文件(流)转换为Blob,但是网上有人说,如果文件的大小太大,会有反压的问题。我应该怎么写文件下载代码,避免背压,才不会让收件人那边因为缓冲区溢出而崩溃?还是应该有其他的方法来下载文件?