Случайные свободные порты 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);
});