Mon projet doit configurer un nouveau port chaque fois qu'une nouvelle instance de ma classe est instanciée.
Dans Node.js, comment trouver un port libre TCP à définir dans mon nouveau serveur de socket? Ou vérifiez si mon port spécifié est déjà utilisé ou non.
Vous pouvez vous connecter à un port libre et aléatoire attribué par le système d'exploitation en spécifiant 0
pour le port. De cette manière, vous n'êtes pas soumis aux conditions de concurrence (par exemple, recherchez un port ouvert et une liaison de processus avec celui-ci avant de pouvoir vous y connecter).
Ensuite, vous pouvez obtenir le port attribué en appelant server.address().port
.
Exemple:
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);
});
Pour trouver un port TCP ouvert, vous pouvez utiliser le module portastic
Vous pouvez trouver un port comme ceci:
port = require('portastic');
options = {
min : 8000,
max : 8005
}
port.find(options, function(err, data){
if(err)
throw err;
console.log(data);
});
Pour l'application Express:
const app = require('express')();
const server = app.listen(0, () => {
console.log('Listening on port:', server.address().port);
});