前端的开发工程,经常需要开启一些调试用的服务器,一旦调试的服务器多了,难免会出现网络端口号的冲突;类似的,如果在一台开发机上有多个人同时开发,开发脚本也就不能写死一个固定的端口号了。在这类情况下,如果要手动解决这些冲突(修改端口号或者手写端口号的分配规则),不免有些麻烦。
事实上,创建服务的时候,可以设置 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 地址以访问新生成的服务了。