Get Available Port Number

JavaScript

前端的开发工程,经常需要开启一些调试用的服务器,一旦调试的服务器多了,难免会出现网络端口号的冲突;类似的,如果在一台开发机上有多个人同时开发,开发脚本也就不能写死一个固定的端口号了。在这类情况下,如果要手动解决这些冲突(修改端口号或者手写端口号的分配规则),不免有些麻烦。

事实上,创建服务的时候,可以设置 0 作为端口号。这样的话,系统就会指定一个当前空闲可用的端口号,以保证不发生端口号冲突的情况。

下面是一段 Node.js 的示意代码:

const http = require('http');
const server  = http.createServer((request, response) => {
  response.writeHead(200, { 'Content-Type': 'text/html' });
  response.write([
    '<html>',
    '<head><title>Node.js Server</title></head>',
    '<body><h1>Hello World</h1></body>',
    '</html>',
  ].join(''));
  response.end();
});

// ask for an available port
server.listen(0);

server.on('listening', function() {
  // ask for actually used port
  var port = server.address().port;
  console.log(`server is listening: ${port}`);
});

其中,server.address().port 可以拿到当前系统具体分配的端口号。有了这个端口号,就可以自动/手动的打开对应的 URL 地址以访问新生成的服务了。