Express:如何在不等待请求的情况下获取正在侦听Express服务器的主机名和端口?

5

从已经发送到express服务器的请求中获取主机名和URL非常简单。但是,在启动express服务器之后(在发送任何请求之前),确定它正在侦听哪个URL似乎没有明显的方法。

如何找出express服务器正在侦听哪个主机和端口?Express是否知道它正在侦听哪个主机和端口?


1
这可能会有帮助 - https://dev59.com/Nmcs5IYBdhLWcg3w0HIa#12566283 - dan
创建一个全新的服务器只是为了获取地址似乎有些过于繁重。 - Fergie
你不需要创建一个新的。假设你已经创建了服务器,那么你可以在其上调用 address() - dan
1个回答

11

如果您创建了这样的服务器:

  var server = http.createServer(app);

服务器实例实际上包含它正在监听的端口和地址。因此,您可以直接导出它,并调用 server.address() 来获取地址和端口。

  { address: '::', family: 'IPv6', port: 3200 }

如果您想了解哪些URL是您的路由正在路由的信息,请尝试

  console.log(router.stack)

然后魔法发生了。:)


1
创建一个全新的服务器只是为了获取地址似乎有点过于繁重。这个信息难道不是直接存储在 express 中吗? - Fergie
除非你运行一个服务器,否则你并没有真正监听任何端口。对吧? - Yaki Klein
这不是关于创建一个新服务器的问题。而是你已经创建的服务器实际上接受和处理请求。是的,express生成的app.js或bin/www确实包含初始化/启动服务器的代码。如果你导出那个服务器实例,随时都可以访问它,因此你可以随时获取所需的所有信息。 - YLS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接