使用 NodeJS 启动一个可用的随机端口号
你以为
如果你根本不想往下看,就直接戳这个库:
https://github.com/indexzero/node-portfinder
代码很少,关键原理如下:
var portrange = 45032
function getPort (cb) {
var port = portrange
portrange += 1
var server = net.createServer()
server.listen(port, function (err) {
server.once('close', function () {
cb(port)
})
server.close()
})
server.on('error', function (err) {
getPort(cb)
})
}
找到一个端口不断试错,直到可用。看起来貌似有点不优雅啊,其实获得可用端口号有2种场景:
- 我想要一个或者一组端口号,可用的,然后做点什么。
- 我想启动一个服务,随便什么端口号吧,启动起来再说,端口号我不关注,只要不报错,不被占用就 ok,当然启动完,我要知道我在哪个端口启动了。
针对第一个需求,上面的代码和例子足够解决了。
针对第 2 个需求,往往大家都是需求 2。
上面2个方法看起来总是怪怪得啊。
其实是
var server = http.createServer();
server.listen(0);
server.on('listening', function() {
var port = server.address().port
});
监听 0 端口,nodejs 会自动分配给你一个可用端口,listening 中获取 port 就 ok 了,就这么简单。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论