首先我们要建立一个json文件导入connect模块:
{
"name": "mywebsite",
"version": "0.1.1",
"dependencies": {
"connect":"1.8.7"
}
}
然后我们自己创建一个中间件request-time:
module.exports=function(opts){
var time=opts.time||100;
return function(req,res,next){
var timer=setTimeout(function(){
console.log(
'\033[39m \033[91mis taking too long!'
,req.method
,req.url
);
},time);
var end=res.end;
res.end=function(chunk,encoding){
res.end=end;
res.end(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'));//利用logger中间件打印出dev格式的日志
server.use(time({ time: 500 }));//实现时间(我们自己创建的)中间件,并且传一个time值
//实现快速访问
server.use(function (req, res, next) {
if ('/a' == req.url) {
console.log(req.url);
res.writeHead(200);
res.end('Fast');
} else {
console.log(req.url);
next();
}
});
//是实现慢速访问
server.use(function (req, res, next) {
if ('/b' == req.url) {
//设置定时
setTimeout(() => {
res.writeHead(200);
res.end('Slow!')
}, 1000);
} else {
next();
}
});
server.listen(3000);
我们用time接收了request返回的函数,并且后面传进了一个{time:500}的对象
然后我们试一下:
node sample.js
然后访问127.0.0.1:3000/a
页面出现 fast
终端打印出:
然后访问127.0.0.1/b
页面出现 slow! 终端打印出:
这里的GET /b 200 1006ms就是 server.use(connect.logger('dev'))
的logger中间件打印出来的日志,关于这方面后面的博客中会继续跟进,深入了解。