我将从客户端向服务器发送10个请求,并在每个请求后休眠。但是请求不会立即到达服务器。即,假设请求1在时间t1从客户端发送到服务器在时间t2将请求2从客户端发送到服务器,依此类推,直到在时间t10将请求10从客户端发送至服务器。但是,所有10个请求都在时间t10之后到达服务器。在某个地方,所有的请求都堆积在客户端,直到最后一个请求,并在时间t10后将所有10个请求发送到服务器。为什么会发生这种情况。这是客户端的代码。
var request = require('request');
var sleep = require('sleep');
require('console-stamp')(console, '[ddd mmm dd yyyy HH:MM:ss.l]');
var myObj = {name: "John", age: 31, city: "New York"};
var myJSON = JSON.stringify(myObj);
for(var a = 1; a<=10;a++){
var url = 'http://localhost:8081/reqSer1/' + myJSON + '/' + a;
console.log("request send");
request.get(url , function (error, response) {
console.log('error:', error); // Print the error if one occurred
console.log(response.body);
// Print the response status code if a response was received
});
sleep.sleep(2);
}
来自睡眠npm文档:
这些调用将通过停止Node.js来阻止所有JavaScript的执行事件循环!
如果您需要绑定并发以避免服务器不堪重负,您应该能够:
- 使用池-这应该允许您配置允许的最大请求数,这将允许您严格控制打开到服务器的连接数,这样您就不会淹没服务器(我对节点不够熟悉,无法推荐最佳做法(