文章目录
这几天看书看到
net
模块的
socket
和
server
对象,发现
socket
具有
end
方法和同名事件,
server
则具有
close
方法和同名事件。
而两者都同时具有一个名为unref
的方法。end
、close
、unref
这三个名字本身,或者是它们所代表的方法都或多或少存在相似之处。这着实是让我这种初学者增加了不少理解难度。
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.