使用 nodejs 和套接字,我试图在一个循环中一起加载流。有人可以告诉我哪里出错了吗?

Using nodejs and sockets I'm trying to load the stream together in a loop. Can someone please tell where I'm going wrong?

下面是代码,我试图通过 ajax 在套接字中添加图像。但是当我 运行 以这种方式编写代码时,所有数据都会附加到最后一张图像,即使它在循环中也是如此。

socket.on('start', function (cou) {
    for (var i = 0; i < cou.length; i++) {
        var image = document.getElementById('cam'+i);
        var divSocket = io(location.origin + 'cam'+i);
        divSocket.on('data', function (data) {
            var bytes = new Uint8Array(data);
            image.src = 'data:image/jpeg;base64,' + bytes;
        });
    };
});

谁能告诉我哪里出错了?

node.js 将开始异步执行此循环,这意味着它不会等到完成写入,因此变量 i 的值会发生变化。像这样使用异步循环:

socket.on('start', function (cou) {
    let i = 0;
    async.eachLimit(cou, 1, function(el, done){
        var image = document.getElementById('cam'+i);
        var divSocket = io(location.origin + 'cam'+i);
        divSocket.on('data', function (data) {
            var bytes = new Uint8Array(data);
            image.src = 'data:image/jpeg;base64,' + bytes;
        });
        divSocket.on('end', function () {
            i++;
            done();
       });
    };
});

看看here

p.s:我没有 运行 代码只是小心 :)