Javascript 如何在node.js中分析传出的http请求?
在node.js中发出http请求的最简单方法是什么,同时跟踪所需时间:查找DNS、连接到服务器、到达第一个字节的时间、完成时间等 我尝试了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
请求
和针
模块,但它们似乎没有这个功能。我是否应该使用普通的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 }