O Node.js se tornou uma ferramenta incrível para a criação de serviços ou utilitários que funcionam como um serviço. Normalmente, são npm start
, espere um pouco e você verá que o utilitário fornece um endereço e uma porta; um bom exemplo é localhost:8000
. Uma coisa que me incomoda nesse padrão é que, se você tiver muitos utilitários baseados em serviços nos quais trabalha, acabará encontrando erros de “porta em uso” e, depois disso, precisará examinar todos os utilitários para ver qual deles deve ser desativado.
Há uma solução fácil para esse problema: Scanner de porta de nó. Esse utilitário fornece métodos para encontrar portas em uso ou disponíveis em um determinado host!
Usando o Port Scanner
O caso de uso mais comum para resolver colisões de portas seria findAPortNotInUse
:
var portscanner = require('portscanner'); // 127.0.0.1 is the default hostname; not required to provide portscanner.findAPortNotInUse([3000, 3010], '127.0.0.1').then(port => { console.log(`Port ${port} is available!`); // Now start your service on this port... });
O fornecimento de uma série de portas e a inicialização na primeira porta disponível é simplificado, sem mais colisões.
O senhor também pode verificar o status de uma determinada porta ou verificar as portas em uso:
// Get port status portscanner.checkPortStatus(3000, '127.0.0.1').then(status => { // Status is 'open' if currently in use or 'closed' if available console.log(status); }); // Find port in use portscanner.findAPortInUse([3000, 3005, 3006], '127.0.0.1').then(port => { console.log('PORT IN USE AT: ' + port); });
O uso desse utilitário de scanner de porta é incrivelmente simples e é a maneira mais fácil de fazer com que seu serviço seja executado em qualquer porta disponível. O uso de portas codificadas, quando desnecessário, só leva à frustração!