Javascript NodeJs应用程序;悬挂;或;冻结“;每当发生错误时
当我向我的nodejs服务器发出多个post请求并且所有参数都正确时,一切正常(并且不会冻结),但当我发出多个post请求且参数错误时,我的nodejs服务器只会冻结/挂起几分钟。为什么会这样 这是我的代码顺便说一句Javascript NodeJs应用程序;悬挂;或;冻结“;每当发生错误时,javascript,node.js,server,Javascript,Node.js,Server,当我向我的nodejs服务器发出多个post请求并且所有参数都正确时,一切正常(并且不会冻结),但当我发出多个post请求且参数错误时,我的nodejs服务器只会冻结/挂起几分钟。为什么会这样 这是我的代码顺便说一句 app.post('/pushtransaction', function(req, res) { console.log(req.body); console.log(5); if (req.body.sigs) { let sigver
app.post('/pushtransaction', function(req, res) {
console.log(req.body);
console.log(5);
if (req.body.sigs) {
let sigver = xmf.modules.ecc.Signature.from(req.body.sigs).toString();
let lasig = [sigver];
console.log(req.body.packedTr);
let transi = JSON.parse(req.body.packedTr);
//let sigver = req.body.sigs;
let package = {
compression: 'none',
transaction: transi,
signatures: lasig
}
console.log(package);
//Pushes tx in correct format
xmf.pushTransaction(package).then(result=>{
res.send(result);
res.end();
console.log(result);
}).catch(err => {
console.log(err)
});
}
})
确保每次在请求中调用res.send()
方法
更新的Javascript:
app.post('/pushtransaction', function(req, res) {
console.log(req.body);
console.log(5);
if (req.body.sigs) {
let sigver = xmf.modules.ecc.Signature.from(req.body.sigs).toString();
let lasig = [sigver];
console.log(req.body.packedTr);
let transi = JSON.parse(req.body.packedTr);
//let sigver = req.body.sigs;
let package = {
compression: 'none',
transaction: transi,
signatures: lasig
}
console.log(package);
//Pushes tx in correct format
xmf.pushTransaction(package).then(result=>{
res.send(result);
res.end();
console.log(result);
}).catch(err => {
console.log(err);
res.status(400).send();
});
}
res.status(400).send();
})
此外,如果调用res.send()
,则不必调用res.end()
。请参阅确保每次在请求中调用res.send()
方法
更新的Javascript:
app.post('/pushtransaction', function(req, res) {
console.log(req.body);
console.log(5);
if (req.body.sigs) {
let sigver = xmf.modules.ecc.Signature.from(req.body.sigs).toString();
let lasig = [sigver];
console.log(req.body.packedTr);
let transi = JSON.parse(req.body.packedTr);
//let sigver = req.body.sigs;
let package = {
compression: 'none',
transaction: transi,
signatures: lasig
}
console.log(package);
//Pushes tx in correct format
xmf.pushTransaction(package).then(result=>{
res.send(result);
res.end();
console.log(result);
}).catch(err => {
console.log(err);
res.status(400).send();
});
}
res.status(400).send();
})
此外,如果调用
res.send()
,则不必调用res.end()
。请参见当遇到错误时,节点服务器除了console.log()
错误之外不知道该做什么。它需要结束该请求并发送一些响应。当您在捕获范围内时,可以res.status(400).发送({error:err})
。当遇到错误时,您的节点服务器除了console.log()
错误之外不知道该做什么。它需要结束该请求并发送一些响应。您可以res.status(400).send({error:err})
当您在捕获范围内时。添加到其他答案中,如果任何服务在某个时间内无法响应,您可以添加超时中间件,如
var timeout = require('connect-timeout');
app.use(timeout('5s'));
除了其他答案之外,如果有任何服务在一段时间内没有响应,您可以添加一个超时中间件,如
var timeout = require('connect-timeout');
app.use(timeout('5s'));
你发出了多少次“多次发帖请求”。Javascript处理错误的速度自然比无错误代码慢,所以这可能是问题的一部分。Javascript处理错误的速度自然比无错误代码慢,因此这可能是问题的一部分。