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

标签 javascript node.js timeout hapi.js

我刚开始使用 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() 需要很长时间才能执行,这似乎可能导致超时并再次发出请求。如何更改请求的超时值,使其不再触发请求?

我非常感谢任何人可以给我的任何建议/线索。

最佳答案

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

From docs:

timeout - define timeouts for processing durations:

...

socket - by default, node sockets automatically timeout after 2 minutes. Use this option to override this behavior. Defaults to undefined which leaves the node default unchanged. Set to false to disable socket timeouts.

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

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

            ...
        }
    }
}]);

关于javascript - 使用 hapi.js reply().hold() 时如何防止脚本重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632081/

相关文章:

python - 修复多处理进程超时时间

Java:URLConnection 的合理超时时间

javascript - 使用指令的范围而不是 Controller 的范围

javascript - 自定义 Jgraph mxCell 的连接输入和输出

node.js - html-docs.js 生成的文档为空

multithreading - 为什么 Node 空闲时有两个线程?

javascript - Three.js 第一人称控制

javascript - 将 Polymer 1.0 片段重写为 Polymer 2

javascript - 使用最小值/最大值随机分块字节

php - 当 curl 尝试解析主机时,如何更改 php curl 超时 (curl err_no 6)