2014-11-29 2 views
1

Мой клиент отправляет файл изображения на сервер. Он работает 5 раз, а затем внезапно останавливается. Я довольно новый, используя потоки и трубу, поэтому я не уверен, что я делаю неправильно.Узел трубы прекращает работу

код сервера

http.createServer(function(req, res) { 

    console.log("File received"); 
    // This opens up the writeable stream to `output` 
    var name = "./test"+i+".jpg"; 
    var writeStream = fs.createWriteStream(name); 

    // This pipes the POST data to the file 
    req.pipe(writeStream); 

    req.on('end', function() { 
    console.log("File saved"); 
    i++; 
}); 

// This is here incase any errors occur 
writeStream.on('error', function (err) { 
    console.log(err); 
}); 
}).listen(3000); 

код клиента

var request = require('request'); 
var fs = require('fs'); 

setInterval(function() { 
    var readStream = fs.createReadStream('./test.jpg'); 
    readStream.on('open', function() { 
    // This just pipes the read stream to the response object (which goes to the client) 
    readStream.pipe(request.post('http://192.168.1.100:3000/test')); 
    console.log("Send file to server"); 

    }); 


}, 1000); 

ответ

0

я должен был сделать следующее на стороне сервера, чтобы сделать эту работу:

res.statusCode = 200; 
res.end(); 
0

ведет себя как вопрос исчерпания ресурсов. Не уверен, какие вызовы вызывают ошибки и которые просто возвращаются. Подключается ли сервер к 6-му звонку? Открыт ли поток записи? Открывается ли труба?

Попытайтесь прекратить соединение и закрыть трубу после сохранения изображения. Возможно, закройте поток записи, не помните, собирает ли мусор узла файловые дескрипторы.

+0

Спасибо за ответ, я узнал, что я сделал неправильно. В моем коде сервера мне пришлось вызвать res.statusCode = 200; и res.end(); – Maninbucket