当前位置: 首页 > 面试题库 >

Express.js响应超时

陈法
2023-03-14
问题内容

问题

我一直在寻找Express.js的请求/响应超时,但是一切似乎都与连接有关,而不是请求/响应本身。

如果请求花费很长时间,则应该超时。显然,这不应该发生,但即使是一个简单的错误,如具有不调用回调或不调用的路由处理程序res.send(),浏览器将永远等待答复。

空路由处理程序就是一个很好的例子。

app.get('/sessions/', function(req, res, callback){});

固定

之前 添加了以下内容 app.use(app,router);并且似乎添加了超时功能。有人对此有任何经验/意见吗?

app.use(function(req, res, next){
    res.setTimeout(120000, function(){
        console.log('Request has timed out.');
            res.send(408);
        });

    next();
});

请注意,我已将超时设置为2分钟。


问题答案:

已经有用于超时的Connect中间件支持:

var timeout = express.timeout // express v3 and below
var timeout = require('connect-timeout'); //express v4

app.use(timeout(120000));
app.use(haltOnTimedout);

function haltOnTimedout(req, res, next){
  if (!req.timedout) next();
}

如果计划将Timeout中间件用作上述的顶级中间件,则该haltOnTimedOut中间件必须是堆栈中定义的最后一个中间件,并用于捕获超时事件。感谢@Aichholzer的更新。

边注:

请记住,如果滚动自己的超时中间件,则4xx状态代码用于客户端错误,而5xx状态用于服务器错误。408保留给以下情况:

在服务器准备等待的时间内,客户端未发出请求。客户端可以在以后的任何时间重复请求而无需修改。



 类似资料:
  • 问题内容: 有没有办法关闭回应?我可以使用,但实际上并没有关闭套接字。 我要实现的目标:我正在编写一个与网络连接的Java程序,并为此编写了一个node.js服务器。Java代码: 但是,这只是一直挂着。没有端连接,仍在等待来自套接字的输入。 节点: 但是,它不会关闭连接。如前所述,java一直认为下一步会发生什么,因此它陷入了while循环中。 谢谢 问题答案: 通过设置HTTP标头关闭连接而不

  • 问题内容: 在将文档保存到数据库后,我试图停止发布请求,即: 目前,我只是简单地使用哪个起作用,但是页面刷新是完全任意的,我希望它不会发生。我去了,但是那把客户带到了空白页。 提前致谢。 编辑: 我认为我在对不起我做事时不够清楚。 也许是不好的做法,但这正在发生: POST启动数据库保存功能 浏览器坐在附近等待响应 准备就绪后,将obj保存到数据库,然后回调触发一个 NowJS 函数,该函数将项目

  • 问题 我一直在寻找Express的请求/响应超时。但是一切似乎都与连接有关,而不是请求/响应本身。 如果请求需要很长时间,则应超时。显然,这不应该发生,但即使是一个简单的错误,比如没有回调调用的路由处理程序或没有res.send(),浏览器也会永远等待回复。 空路由处理程序就是一个很好的例子。 修复 我在似乎添加了超时功能。有人对此有任何经验/意见吗? 注意,我已将超时设置为2分钟。

  • 我正试图在我的Android emulator和Iphone上运行一个应用程序,使用Expo和Create React原生应用程序。 为此,我运行了以下命令。 执行run命令后,应用程序将在模拟器中运行,并出现以下错误: 当我在Iphone上扫描二维码,但在网络浏览器中无法访问ip时,也会发生同样的情况。 我在互联网上找到了以下修复方法,但似乎没有任何效果: 将端口19000添加到Windows防

  • 我使用Jmeter对一个包括web套接字连接的应用程序进行负载测试。 当尝试使用单读取采样器读取帧中的数据时,得到错误响应代码:无响应响应消息:读取超时,未收到响应。 有人能帮我解决这个问题吗? 线程名称:密苏里州TestEnv 1-1样例开始时间:2019-10-09 10:40:43 IST加载时间:1000连接时间:0延迟时间:0大小以字节为单位:0发送字节:0头大小以字节为单位:0主体大小

  • 问题内容: 我需要将CORS设置为在express服务的脚本上启用。如何为公共/资产在这些返回的响应中设置标题? 问题答案: npm上至少有一个中间件用于处理Express中的CORS:cors。[请参阅@mscdex答案] 这是从ExpressJS DOC 设置自定义响应头的方法 将标题字段设置为值 或传递一个对象以一次设置多个字段。 别名为