nodejs中需要周期性地创建net.Socket()对象,很占CPU/内存,应该如何释放它?

写了一个工具函数,供不同模块拿去检测网络通断,有的模块会每隔几秒钟周期性地调用本函数,结果时间长了之后,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);
        });
    });
};

阅读 2.4k
1 个回答
const socket = new net.Socket();
export function xxx(host,port,timeout=10000) {
    client.connect();
}

试试?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题