Node.js的 - get请求之后,脚本不返回到控制台(node.js - after get

2019-10-19 20:57发布

下面是一个简单的脚本

    var http = require("http");

    http.get( WEBSITE, function(res) {
       console.log("Does not return");
       return;
    });

如果WEBSITE的变量是“ http://google.com ”或“ http://facebook.com ”脚本不返回到控制台。 但如果WEBSITE变量是“ http://yahoo.com ”或“ http://wikipedia.org ”返回到控制台。 有什么区别?

Answer 1:

通过“回归安慰”我假设你的意思是节点退出,而您回来在shell提示符下。

事实上,节点做最终为你列出的那些领域的退出。 (你只是不耐烦。)

你们看到的是保持HTTP的结果。 默认情况下,节点保持一个HTTP请求完成后开放的TCP连接。 这使得后续的请求到同一台服务器更快。 只要一个TCP连接仍然是开放的,节点将不会退出。

最终,任一节点或服务器将关闭空闲连接(且因此节点将退出)。 这可能是谷歌和Facebook允许空闲连接活更长的时间量超过雅虎和维基百科。

如果你希望你的脚本进行的请求,并尽快,因为它完成退出,你需要禁用HTTP保持活动。 您可以通过禁用为此代理的支持。

http.get({ host:'google.com', port:80, path:'/', agent:false }, function(res) {
   ...
});

只有当你需要这种特定的功能禁用代理。 在一个正常的,长期运行的应用程序,禁用代理会导致许多问题。

还有,你可以去避免保持有效指示保持节点运行一些其他的方法 。



文章来源: node.js - after get request, script does not return to console
标签: node.js http