Node.js踩坑之旅(二)--net模块中socket的end和server的close以及两者都有的unref

本文介绍了Node.js net模块中net.Server对象的close方法,强调它不会立即关闭服务器,而是等待所有连接结束后触发'close'事件。探讨了net.Socket对象的allowHalfOpen参数,end方法及其触发的end事件,以及服务器的unref方法,解释了unref在何时允许程序退出。此外,还讨论了net.Socket对象的close事件以及其unref方法的使用情况。
摘要由CSDN通过智能技术生成


这几天看书看到 net模块的 socketserver对象,发现 socket具有 end 方法和同名事件server则具有 close 方法和同名事件

而两者都同时具有一个名为unref的方法。endcloseunref这三个名字本身,或者是它们所代表的方法都或多或少存在相似之处。这着实是让我这种初学者增加了不少理解难度。

net.Server对象

close方法

close,字面上理解就是关闭的意思。作为server对象的方法,那么应该就是用来关闭当前server的方法。

事实上也确实如我们从字面上直接分析得出的结论一样,close方法的确是用来关闭server对象的。不过,并不是直接关闭

Stops the server from accepting new connections and keeps existing connections. This function is asynchronous, the server is finally closed when all connections are ended and the server emits a ‘close’ event. The optional callback will be called once the ‘close’ event occurs.

以上是Node.js官方文档中截取的关于server.close()的描述。可以看出,close方法执行后。服务器将不会接受任何新增的连接,但仍会保证现有的连接。而服务器将会在所有连接都终止之后被关闭

举个例子:

客户端:

let net = require('net');

let client = new net.Socket();

client.connect(2000, '192.168.199.106', ()=>{
   
	console.log('已连接到服务器端');
	client.write('你好');
	client.end('再见。');
});

client.on('data', (data)=>{
   
	console.log('接收到数据:');
	console.log(data.toString());
});

client.on('error', (err)=>{
   
	console.warn(err);
	client.destory();
});

client.on('end', ()=>{
   
	console.log('ended');
});

client.on('close', ()=>{
   
	console.
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值