Как подключить грозную загрузку файлов к socket.io в Node.js

Я новичок в узле, и я пытаюсь настроить загрузку многофайлового изображения через грозный, который будет иметь индикатор выполнения, а также обратный вызов после каждого 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);
    });
});
7
задан mistersoftee 17 April 2012 в 01:43
поделиться