使用nodejs获取一个可用的随机端口号
发布在nodejs 边角料2014年4月11日view:7563
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

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

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.0.0.0,nodejs会自动分配给你一个可用端口,listening中获取port就ok了。。就这么简单。

评论
发表评论
3年前

又跟小爵学到了新姿势

WRITTEN BY
PUBLISHED IN
nodejs 边角料

分享和记录一下,个人在学习nodejs中遇到的一些有意思的事。

我的收藏