Я новичок в узле, и я пытаюсь настроить загрузку многофайлового изображения через грозный, который будет иметь индикатор выполнения, а также обратный вызов после каждого upload, который будет динамически загружать все изображения на одну и ту же страницу после того, как они будут загружены. Я понимаю, что мне нужно использовать socket.io для взаимодействия с браузером после начала загрузки. У Formidable есть прослушиватель событий для «прогресса». Мне нужен сценарий на стороне клиента для получения полученных байтов для создания панели загрузки. После завершения загрузки файла я хочу, чтобы socket.io передал клиенту URL-адрес того места, где было загружено изображение, чтобы клиент мог загрузить изображение и динамически добавить его в DOM. Вот код, который у меня есть до сих пор.
У меня вопрос: как структурировать код socket.io внутри прослушивателя событий для «прогресса», чтобы он мог транслироваться клиенту?
Вот некоторый свободный псевдокод -, чтобы показать вам, о чем я говорю:
//formidable code:
app.post('/new', function(req,res){
var form = new formidable.IncomingForm();
form.addListener('progress', function(bytesReceived, bytesExpected){
//Socket.io interaction here??
});
form.uploadDir = __dirname + '/public/images/';
form.on('file', function(field, file) {
//rename the incoming file to the file's name
fs.rename(file.path, form.uploadDir + "/" + file.name);
console.log(form.uploadDir + "/" + file.name);
})
});
//socket.io code
io.sockets.on('connection', function (socket) {
socket.on('upload', function (msg) {
socket.broadcast.emit('progress', bytesReceived);
});
});