Javascript 学习节点-书籍-第16-18页-两个示例

Javascript 学习节点-书籍-第16-18页-两个示例,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,在第16页和第18页之间有两个示例。 示例1.3是一个服务器应用程序。 示例1.4是一个向服务器发送GET请求的客户端应用程序。 当我同时运行这两个示例时,我注意到一些非常奇怪的行为 在客户端。执行所有请求(即客户端中的for循环完成) 但其中只有5个的回调被调用。客户端没有退出,并且也 不会出错。并且不再调用回调。 有什么想法可能会发生什么,或者我如何进一步排除故障吗 注意:我正在Windows 7上运行Node.js v0.10.20 服务器: 问题是,客户端不使用服务器发送的响应主体,

在第16页和第18页之间有两个示例。
示例1.3是一个服务器应用程序。
示例1.4是一个向服务器发送GET请求的客户端应用程序。

当我同时运行这两个示例时,我注意到一些非常奇怪的行为
在客户端。执行所有请求(即客户端中的for循环完成)
但其中只有5个的回调被调用。客户端没有退出,并且也
不会出错。并且不再调用回调。

有什么想法可能会发生什么,或者我如何进一步排除故障吗

注意:我正在Windows 7上运行Node.js v0.10.20


服务器:


问题是,客户端不使用服务器发送的响应主体,因此连接保持(半)打开状态,http代理默认情况下每个客户端只允许5个并发请求,导致它在5个请求后挂起。连接最终将超时,导致处理接下来的5个请求

更改回调函数以使用响应中发送的任何数据

var callback_function = function(response) {
    // finished? ok, write the data to a file
    console.log('got response back');
    response.on('data', function () {});
};

为什么不显示实际的代码?或者你只希望那些碰巧有这本书在面前的人给出答案吗?好的,我几分钟后就把它贴出来。@p.s.w.g:这是一本书的作者sells@zerkms否;)只是无法让这个例子工作2-3天,决定在这里问。让我发布我在尝试排除故障时重新编写的代码。好的,添加了所有信息。看起来确实好多了。谢谢你的回答和链接。
var http = require('http');

var N = 200;

// The URL we want, plus the path and options we need
var options = {
    host: 'localhost',
    port: 8124,
    path: '/?file=automatic',
    method: 'GET'
};

var callback_function = function(response) {
    // finished? ok, write the data to a file
    console.log('got response back');
};

for (var i = 1; i <= N; i++) {
    // make the request, and then end it, to close the connection
    http.request(options, callback_function).end();
    console.log('done with call # ' + i);
}
function schedule(){
    http.request(options, callback_function).end();
    console.log('done with call ' + i);
    i++;
    if (i<=N){
        setTimeout(function(){
            schedule();
        }, 1000);
    }
}

schedule();
C:\PERSONAL\NODE_TEST>node test004.js
done with call 1
got response back
done with call 2
got response back
done with call 3
got response back
done with call 4
got response back
done with call 5
got response back
done with call 6
done with call 7
done with call 8
done with call 9
done with call 10
got response back
got response back
got response back
got response back
got response back

C:\PERSONAL\NODE_TEST>
var callback_function = function(response) {
    // finished? ok, write the data to a file
    console.log('got response back');
    response.on('data', function () {});
};