【中间件】请求时间中间件

request-time.js

module.exports = function(opts) {
    var time = opts.time || 100
    return function(req, res, next) {
        var timer = setTimeout(function() {
            console.log(
                '33[90m%s %s33[39m 33[91mis taking too long!33[39m'
                , req.method
                , req.url
            )
        }, time)

        var end = res.end
        res.end = function(chunk, encoding) {
            console.log(chunk + '(chunk)' + encoding + '(encoding)')
            res.end = end
            res.end(chunk + '(chunk)', encoding)
            clearTimeout(timer)
        }
        next()
    }
}

sample.js

var connect = require('connect')
var time = require('./request-time')

var server = connect.createServer()

/**
 * 日志记录
 */
server.use(connect.logger('dev'))

server.use(time({time: 500}))

server.use(function(req, res, next) {
    if ('/a' == req.url) {
        res.writeHead(200)
        res.end('Fast!')
    } else {
        next()
    }
})

server.use(function(req, res, next) {
    if ('/b' == req.url) {
        setTimeout(function() {
            res.writeHead(200)
            res.end('Slow!')
        }, 1000)
    } else {
        next()
    }
})

server.listen(3000)
原文地址:https://www.cnblogs.com/jzm17173/p/3439839.html