如何知道节点中的http.Server实例是否已经在监听

我有一个http服务器和一段代码,只有当服务器正在侦听时才需要运行。 为此,我对"listening"事件具有约束力,如下所示:

 server.on('listening', doSomething) 

事情是,我的服务器可能已经在侦听,然后事件"listening"将不会被发射,我的代码将不会运行…有没有办法知道服务器的状态? 就像是 :

 if (server.isListening() === true) doSomething() else server.on('listening', doSomething) 

编辑我当然可以(如在其他类似的问题build议)尝试连接到该端口,看看有人在听。 但是这并不能certificate我正在使用的特定实例正在聆听。 只是有一些服务正在那里倾听。

当使用http.createServer的实例时, address()函数可用于服务器实例。 这表示实际服务器是否正在侦听并可用。

直到在服务器实例上调用listen()之前, address()返回null因为实例本身还没有一个正在监听的地址。

一旦listen()被调用, address()将返回一个对象。

 var http = require('http'); var server = http.createServer(); console.log(server.address()); // This will be null because listen() hasn't been called yet server.listen(3000, 'localhost', function() { console.log('listening'); }); console.log(server.address()); // { address: '127.0.0.1', family: 'IPv4', port: 3000 } 

概要

如果server.address()null ,那么您的实例没有运行。
如果server.address()返回一个对象,你的实例正在运行。