使用 NodeJS 启动一个可用的随机端口号

发布于 2021-11-03 19:25:21 字数 1048 浏览 1610 评论 0

你以为

如果你根本不想往下看,就直接戳这个库:

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种场景:

  1. 我想要一个或者一组端口号,可用的,然后做点什么。
  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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

柳若烟

暂无简介

0 文章
0 评论
614 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文