使用 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:我没有 运行 代码只是小心 :)
下面是代码,我试图通过 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:我没有 运行 代码只是小心 :)