写了一个工具函数,供不同模块拿去检测网络通断,有的模块会每隔几秒钟周期性地调用本函数,结果时间长了之后,CPU和内存占用都非常高,初步确定是new net.Socket()造成的,请问这个对象应该如何释放?
var net = require('net');
export function detectNetwork(host, port, timeout=1000) {
return new Promise(function (resolve, reject) {
var testsocket = require('socket.io-client')('http://localhost');
// testsocket.on('connect', function(){});
var client = new net.Socket();
client.setTimeout(timeout);
client.connect(port, host)
// once方法类似于on方法,但是回调函数只触发一次。
client.on('connect', function() {
resolve({"localAddress": client.localAddress,
"localPort": client.localPort});
})
client.on('error', function(e) {
reject(e);
})
client.on('timeout', () => {
var e = {'code': 'ETIMEDOUT',
'errno': 'ETIMEDOUT',
'message': 'connect ETIMEDOUT ' + host + ':' + port,
'address': host,
'port': port,
'syscall': 'connect'
}
reject(e);
});
});
};
试试?