问题描述
我正在尝试编写一个nodejs代码,该代码读取(音频)文件并将内容流式传输到远程服务(对话框)。我在确保发送到流的块的顺序方面遇到麻烦。 在大多数情况下,一切似乎都以正确的顺序进行,但有时,数据似乎是以乱序方式发送的。
伪代码:
for (var i = 0; i < numFiles; ++i) {
await sendData(fs.createReadStream(filenames[i]),i);
}
...
async function sendData(inputDataStream,chunkIndex) {
await inputDataStream
.pipe(new Transform({
objectMode: true,transform: (obj,_,next) => {
console.log('Sending chunk ' + chunkIndex);
next(null,<some data>);
}
}),{end: false})
.pipe(outputStream,{end: false});
}
我看到有时候“发送块...”的打印顺序不正确。
问:有什么办法可以避免这个问题?
另一个问题是,尽管在大多数情况下,每个块都是连续发送的,但有时,一些块将被拆分并以较小的子块发送(即使每个文件都不大)。 [我在同一组文件上重复了多次实验]
问:有什么方法可以控制块大小? (我在这里做错了什么?)问:这是因为远程服务无法处理传输速率吗?如果是这样,我应该如何应对呢?
[我也尝试过使用pump(),但仍然观察到相同的行为] 预先感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)