我刚刚开始使用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()
需要很长时间才能执行,这似乎可能会导致超时并再次发出请求。如何更改请求的超时值,以便它不会再次触发请求?
我非常感谢任何人可以给我的建议/指导。
答案 0 :(得分:3)
您可能会遇到默认的Node.js套接字超时2分钟。您可以使用路由配置选项config.timeout.socket
覆盖它:
timeout
- 定义处理持续时间的超时:...
socket
- 默认情况下,节点 套接字在2分钟后自动超时。使用此选项 覆盖此行为。默认为离开节点的undefined
默认不变。设置为false
以禁用套接字超时。
像这样设置以完全禁用路径的超时:
server.route([{
method: 'GET',
path: '/query',
config: {
timeout: {
socket: false
},
handler: function(request, reply) {
...
}
}
}]);