如何防止在使用hapi.js reply()。hold()时重新加载脚本?

我刚开始使用hapi.js,并在尝试推迟路由响应时遇到问题。

我使用这段代码成功推迟了/query路由的响应:

 server.route([{ method: 'GET', path: '/query', config: { handler: function(request, reply) { var response = reply().hold(); db = request.server.plugins['hapi-mongodb'].db; someFxn(callbackFxn, request, response); } } }]); var someFxn(cb, req, res){ var raw = {}; //... do lots of stuff that can take a long time cb(req, res, raw); } var callbackFxn = function(request, response, data){ response.source = data; response.send(); } 

我遇到的问题是,有时someFxn()需要很长时间来执行,这似乎可能会导致超时,并再次提出请求。 我怎样才能改变请求的超时值,以便它不会再次触发请求?

我真的很感激任何人都可以给我的build议/线索。

你可能会碰到2分钟的默认Node.js套接字超时。 您可以使用路由configuration选项config.timeout.socket覆盖它:

从文档:

timeout – 定义超时处理持续时间:

socket – 默认情况下,节点套接字在2分钟后自动超时。 使用此选项覆盖此行为。 默认为undefined ,使节点缺省不变。 设置为false以禁用套接字超时。

像这样设置,完全禁用路由超时:

 server.route([{ method: 'GET', path: '/query', config: { timeout: { socket: false }, handler: function(request, reply) { ... } } }]);