Я загружаю файл (используя multer) и обрабатываю его, и я хочу показать прогресс, пока я работаю над ним. моя проблема в том, что клиент получает все обновления после завершения обработки. поэтому индикатор выполнения переходит от 0 до 100% вместо постепенного обновления по мере продвижения кода.sockets.io emit сообщения задерживаются до завершения записи
на стороне сервера
var multer = require('multer')
var uploading = multer({ dest: 'uploads/' })
app.post('/result', uploading.single('audio'), function(req, res) {
var oldPath = req.file.path;
var newPath = req.file.destination + req.file.originalname;
fs.renameSync(oldPath, newPath)
var ext = newPath.substring(newPath.length-3);
io.emit('message',{'message': 'upload completed !'});
console.log('1st update');
if (ext =='mp3' || ext == 'wav')
{
//console.log('running audio code');
io.emit('update',{'step': 'Converting Audio',percent: 2/10});
audio_code(newPath);
//res.render('Results_Audio', { });
}
else if (ext =='avi' || ext == 'mp4')
{
console.log('run video code');
res.render('Results_Video', { });
}
});
на стороне клиента
socket.on('update',function(data) {
console.log(data);
Update(data);});
function Update(data){
document.getElementById('NameArea').innerHTML = data.step;
console.log(data.percent*100);
document.getElementById('ProgressBar').style.width = data.percent*100 + '%';
document.getElementById('percent').innerHTML = (Math.round((data.percent*100))) + '%';
}
Я новичок в этом, поэтому мне может быть не хватает простой концепции – mhmsa
Как вы отправляете данные? Можете ли вы показать этот код? Я предполагаю, что это блокирующий вызов –
@greg_diesel Я использую multer, я добавил эту информацию в вопрос – mhmsa