如何防止在使用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) { ... } } }]);