下面通过几个简单例子,细说http服务的相关事件。
1.监听服务开启,监听回调函数被调用,例子如下:
var http = require('http');
var server = http.createServer(function(request, response){
});
server.listen(1234, "127.0.0.1",function(){
console.log('服务器开始监听1234端口');
});
运行上面这段程序,发现在控制台打印 :服务器开始监听1234端口
说明,监听事件触发后,监听回调函数被调用执行。
2.服务端关闭调用close事件,close事件中回调函数被调用
var http = require('http');
var server = http.createServer(function(request, response){
server.close();
});
server.listen(1234, "127.0.0.1",function(){
console.log('服务器开始监听1234端口');
});
server.on('close',function(){
console.log('服务器已经关闭');
})
运行上面程序后,通过网页输入在浏览器中打开http://localhost:1234或http:// 127.0.0.1:1234后,发现控制台打印服务器已经关闭,这是因为网页请求调用request事件后触发其回调函数,在回调函数中调用close()方法触发close事件,进而触发close事件的回调函数被调用。
3.当端口被占用时,抛出error事件,error事件的回调函数被调用。
var http = require('http');
var server = http.createServer(function(request, response){
});
server.listen(1234, "127.0.0.1",function(){
console.log('服务器开始监听1234端口');
});
server.on('error',function(e){
if (e.code == "EADDRINUSE") {
console.log('服务器地址及端口已经被占用');
}
});
运行上面代码后,再启动一个控制台同样运行上面代码,会在控制台打印 服务器地址及端口已经被占用。表明当端口被占用时,抛出error事件,error事件的回调函数被调用。
4.connection事件,客户端和服务器建立的时候被发送,回调函数被调用。
var http = require('http');
var server = http.createServer(function(request, response){
});
server.listen(1234, "127.0.0.1",function(){
console.log('服务器开始监听1234端口');
});
server.on('connection',function(socket){
console.log('客户端连接已经建立');
});
运行上面代码后,通过网页输入在浏览器中打开http://localhost:1234或http:// 127.0.0.1:1234后,发现控制台打印客户端连接已经建立,说明客户端和服务器建立连接的时候被发送,回调函数被调用
5.测试服务器端超时。setTimeout(3*1000,function()) 设置超时, 超时时,超时回调函数会被调用。
var http = require('http');
var server = http.createServer(function(request, response){
});
server.listen(1234, "127.0.0.1",function(){
console.log('服务器开始监听1234端口');
});
server.setTimeout(3*1000,function(socket){
console.log('服务端超时');
console.log(socket);
});
运行上面程序,等待一段时间,发现控制台输出服务器超时,后把整个socket对象输出,说明超时时,超时回调函数会被调用。