我无法在不损坏NodeJS的情况下复制ArrayBuffer的麻烦

问题描述 投票:-2回答:1

我在NodeJS中运行了一些Javascript,试图从UDP端口(本地端口)上获取一些数据,然后将其收集为更大的块,然后以this_block的形式发送。

文件顶部

var first_buf = new Uint8Array(1024*1024);

随后再说

var newbox = get_box(view, last_offset, first_len);
if (newbox['type']=='abcd') {
    buf = view.slice(0, last_offset+newbox['length']);
    this_block = Array.prototype.slice.call(buf);
    buf = view.slice(last_offset+newbox['length'], first_len);
    // adjust first len to account for rest of data
    first_len = first_len - last_offset - newbox['length'];
    // and copy that data into the start of first_buf
    first_buf.set(buf);
    last_offset = 0;
}
else {
    this_block = [];
    buf = view.slice(0, first_len);
    // now copy this into the start of first_buf.
    first_buf.set(buf);
    // first_len is already set correctly, so don't need to adjust

    last_offset += newbox['length'];
}

因此,到此结束时,我应该将this_block设置为空数组或要发送的正确arraybuffer。暂时可以将数据复制到this_block,并将任何备用副本复制到first_buf的开头。然后经过几次迭代后,块副本(first_buf.set)破坏了数据,我得到了垃圾。我认为是.set导致了它,但是我看不到是怎么回事。非常感谢收到的任何线索。

node.js copy arraybuffer
1个回答
-2
投票

好吧,我不认为问题出在这里。进一步的分析表明,传入的数据有时会丢失一大块。

© www.soinside.com 2019 - 2024. All rights reserved.