在客户端堆积请求

时间:2018-12-06 13:58:29

标签: javascript node.js server request client

我正在从客户端向服务器发送10个请求,并在每个请求之后进入休眠状态。但是请求没有立即到达服务器。 也就是说,假设请求1在时间t1从客户端发送到服务器               请求2在时间t2从客户端发送到服务器,依此类推,直到请求10在时间t10从客户端发送到服务器。 但是所有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);

}

1 个答案:

答案 0 :(得分:0)

摘自sleep npm文档:

  

这些调用将通过停止Node.js来阻止所有JavaScript的执行   事件循环!


如果您需要绑定并发以免使服务器不堪重负,则应该能够:

  • 使用池-这应允许您配置允许的最大请求数,这将使您能够严格控制打开到服务器的连接数,以免造成压力它(我对节点还不够熟悉,无法为此推荐最佳实践)