[英]Nodejs Socket hang up & ECONNRESET - HTTP post request from Meteor to Node js server
[英]NodeJS HTTP request POST ERROR socket hang up
嗨,我遇到了一个问题,在给定更大数量的json对象数组的情况下对NodeJS执行HTTP请求。 给定json对象的小数组,请求工作正常。 但是,如果我尝试增加json的size数组,我收到错误:socket hang up {“error”:{“code”:“ECONNRESET”}}。 是否需要执行多次写入? 或者在另一端发生了什么问题?
在此先感谢您抽出宝贵的时间!
// data is a json object
var post_data = JSON.stringify(data);
var buf = new Buffer(post_data);
var len = buf.length;
var options = {
hostname: address,
port: port,
path: pathName,
method: 'PUT',
headers: {
'Content-Type':'application/json',
'Content-Length': len,
'Transfer-Encoding':'chunked'
}
};
// http call to REST API server
var req = restHttp.request(options, function(res) {
console.log('server PUT response received.');
var resData = '';
res.on('data', function(replyData) {
// Check reply data for error.
console.log(replyData.toString('utf8'));
if(replyData !== 'undefined')
resData += replyData;
});
res.on('end', function() {
callback(JSON.parse(resData));
});
});
req.write(buf);
req.end();
您可以流式传输请求正文。
如果buf
中的数据是可读流,那么你可以只执行buf.pipe(req)
。
例如,如果当前目录包含带有JSON的文件data.json
,则可以执行此操作
var buf = fs.createReadStream(__dirname + '/data.json');
创建一个ReadStream对象。 然后你可以把它管道给你req
buf.pipe(req);
一旦完成流式传输,pipe命令将调用req.end
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.