分类 NodeJs 下的文章

Agent 负责管理 HTTP 客户端的连接持久性和重用。 它为给定的主机和端口维护一个待处理请求队列,为每个请求重用单独的套接字连接,直到队列为空,此时套接字被销毁或放入连接池,以便再次用于请求到同一个主机和端口。 销毁还是放入连接池取决于 keepAlive 选项。

连接池中的连接已启用 TCP Keep-Alive,但服务器仍可能关闭空闲连接,在这种情况下,它们将从连接池中删除,并且当为该主机和端口发出新的 HTTP 请求时将建立新连接。 服务器也可以拒绝通过同一连接允许多个请求,在这种情况下,必须为每个请求重新建立连接,并且不能放入连接池。 Agent 仍将向该服务器发出请求,但每个请求都将通过新连接发生。

详见:http://nodejs.cn/api

let express = require("express");
let app = express();
let http = require('http');

app.get("/", function (req, res) {
    http.get({
        hostname: 'ya.test.me',
        port: 80,
        path: '/',
        agent: new http.Agent({keepAlive: true,})
    }, (result) => {
        console.log('STATUS: ' + result.statusCode);
        result.on('data', chunk => {
            console.log('BODY: ' + chunk);
        });
        res.send("hello");
    });
});
app.listen(3000);

查看TCP连接状况

netstat -lnpa | grep :80 | grep -v 8080  | awk '{print $6}' | sort | uniq -c | sort -rn

   1038 ESTABLISHED
      1 LISTEN

如果不使用http.Agent 会造成很多等待

   1659 TIME_WAIT
      1 LISTEN

既占了连接,又没有复用,比短连接危害更大。http.Agent 对象改为了全局公用 数据正常

 10 ESTABLISHED
  1 LISTEN

文章来源于 https://cloud.tencent.com/developer/article/1727821

引入模块 如果没有则要先安装 npm install fs

var fs = require("fs");

异步读取:

var data = fs.readFileSync('test.txt');

同步读取

fs.readFile('test.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});


// 写入文件内容(如果文件不存在会创建一个文件)
// 传递了追加参数 { 'flag': 'a' }

fs.writeFile('./test.log', 'HelloWorld', { 'flag': 'a' }, function(err) {
    if (err) {
        throw err;
    }
 
    console.log('Hello.');
 
    // 写入成功后读取测试
    fs.readFile('./test.log', 'utf-8', function(err, data) {
        if (err) {
            throw err;
        }
        console.log(data);
    });
});