nodejsHttp服务器专题(三)-细说http服务器事件

本文详细解析了HTTP服务的五大核心事件:监听服务开启、服务端关闭、端口冲突错误、客户端连接建立及服务器端超时。通过具体示例,深入浅出地介绍了每个事件触发的场景及其回调函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面通过几个简单例子,细说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对象输出,说明超时时,超时回调函数会被调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值