я у себя открывал вебсокет с сервером (socket.io), в браузере
const socket = io('http://localhost:3000');
socket.on('progress', function (data) {
// сколько % загружено на сервер
const progress = Math.round(data.bytesReceived / data.bytesExpected * 100)
progressBar.style.width = progress + '%' // CSS ширина прогресс бара
});
на сервере node.js
const formidable = require('formidable')
const form = new formidable.IncomingForm();
.....
// событие progress у загружаемой формы
form.on('progress', function (bytesReceived, bytesExpected) {
var progress = {
type: 'progress',
bytesReceived: bytesReceived,
bytesExpected: bytesExpected
};
// шлем событие progress в браузер
req.io.sockets.emit('progress', progress);
});