Случайные свободные порты tcp Nodejs

Мой проект должен настроить новый порт каждый раз, когда создается экземпляр нового экземпляра моего класса.

В Node.js, как я могу найти свободный TCP-порт для установки на моем новом сервере сокетов? Или проверьте, установлен ли мой указанный порт или нет.

Ответы

Ответ 1

Вы можете привязать к произвольному свободному порту, назначенному ОС, указав 0 для порта. Таким образом, вы не подвергаетесь условиям гонки (например, проверяете наличие открытого порта и привязку к нему какого-либо процесса, прежде чем сможете получить привязку к нему).

Затем вы можете получить назначенный порт, вызвав server.address().port.

Пример:

var net = require('net');

var srv = net.createServer(function(sock) {
  sock.end('Hello world\n');
});
srv.listen(0, function() {
  console.log('Listening on port ' + srv.address().port);
});

Ответ 2

Чтобы найти открытый TCP-порт, вы можете использовать модуль portastic

Вы можете найти такой порт:

port = require('portastic');

options = {
    min : 8000,
    max : 8005
}

port.find(options, function(err, data){
    if(err)
        throw err;
    console.log(data);
});

Ответ 3

Для приложения Express:

const app = require('express')();

const server = app.listen(0, () => {
  console.log('Listening on port:', server.address().port);
});