如何从客户端向服务器发出异步请求?

时间:2019-07-18 15:37:35

标签: node.js

想从客户端到服务器发出很少的异步请求。

i使用http模块设置本地服务器,并将此功能导出到主应用程序文件。在客户端文件中,我编写了发出http请求的函数,并且多次调用此函数。

//server
const http = require('http');
const ms = 2000;
const init = () => {
    http.createServer((req,res) => {
        sleep(ms);
        console.log(req.method);
        console.log("After sleeping 2 seconds,hello from server");
        res.end();
    }).listen(5000, () => {
        console.log("server running");
    });
}
function sleep(ms) {
    Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,ms);
    console.log("Sleep 2 seconds.");
}

module.exports.init = init;

//client
const url = "http://127.0.0.1:5000";
const http = require('http');

 const  getData = async url => {
  await http.get(url, res => {
    res.on('data', chunk => {
      console.log("chunk : "+chunk);
    });
    res.on('end', () => {
      console.log("response ended.");
    });
  }).on("error", (error) => {
    console.log("Error: " + error.message);
  });
};
const makeRequests = () => {
  for (let i = 0; i < 3; i++) {
    getData(url);
  }
}
module.exports.makeRequests = makeRequests;

//app
const server1 = require('./server1');
const client = require('./client');

server1.init();
client.makeRequests();

我如何正确使用异步等待?为什么现在要打印“块”?

1 个答案:

答案 0 :(得分:0)

  

想从客户端到服务器发出很少的异步请求。

好吧,您的代码实际上是异步的。

  

我如何正确使用异步等待?

How to use async/await correctly。有示例如何使用。

  

为什么现在要打印“大块”?

http.get(url, res => {
    res.on('data', chunk => {
      console.log("chunk : "+chunk);
    });
    res.on('end', () => {
      console.log("response ended.");
    });

http.get(URL,callback)...如果接收到新的块,则会触发response.on(“ data”)。因此它将读取直到响应流获得EOF(文件结束)。如果您想一次保存并读取全部数据,则可以通过追加并在“末尾”读取将块写入变量中。