Javascript 如何在node.js中分析传出的http请求?

Javascript 如何在node.js中分析传出的http请求?,javascript,node.js,request,Javascript,Node.js,Request,在node.js中发出http请求的最简单方法是什么,同时跟踪所需时间:查找DNS、连接到服务器、到达第一个字节的时间、完成时间等 我尝试了请求和针模块,但它们似乎没有这个功能。我是否应该使用普通的httpmodule来整合我自己的解决方案?包装模块,以便您可以使用请求对象发出的事件来侦听事件 根据您的问题,您可以收听套接字上的'lookup'、'connect'、'data'和'close'事件,并使用和跟踪操作所用的时间 // You can use request from npm con

在node.js中发出http请求的最简单方法是什么,同时跟踪所需时间:查找DNS、连接到服务器、到达第一个字节的时间、完成时间等

我尝试了
请求
模块,但它们似乎没有这个功能。我是否应该使用普通的
http
module来整合我自己的解决方案?

包装模块,以便您可以使用请求对象发出的事件来侦听事件

根据您的问题,您可以收听套接字上的
'lookup'
'connect'
'data'
'close'
事件,并使用和跟踪操作所用的时间

// You can use request from npm
const request = require('request')

// Or the native http/https module
// const {request} = require('https')

// Store the http.ClientRequest object returned
const req = request('https://www.google.com')

// Listen for the 'socket' event and then attach listeners to the socket
req.on('socket', socket => {
  console.time('dnsInfo')

  socket.once('lookup', (err, address, family, host) => {
    console.timeEnd('dnsInfo')
    console.log(address, family, host)
  })

  socket.once('connect', () => {
    console.time('requestTime')
    console.time('initialData')
    console.log('Connected to server')
  })

  socket.once('data', chunk => console.timeEnd('initialData'))
  socket.once('close', () => console.timeEnd('requestTime'))
})

req.end()

似乎
request
实际上支持通过添加
time
选项来测量计时:

request = require 'request'

opts =
    url: 'http://localhost/redirect.php'
    time: true

request opts, (e, r, body) ->
    console.log r.timingPhases
印刷品

{ wait: 4.005603000000008,
  dns: 0.5604900000000157,
  tcp: 0.2195809999999483,
  firstByte: 1.0195130000000177,
  download: 0.7950860000000262,
  total: 6.600273000000016 }