我有一个http服务器和一段代码,只有在服务器正在侦听时才需要运行.为此,我这样绑定"listening"事件:
server.on('listening', doSomething)
Run Code Online (Sandbox Code Playgroud)
问题是我的服务器可能已经在监听,然后事件"listening"将不会被发出,我的代码将无法运行...有没有办法知道服务器的状态?就像是 :
if (server.isListening() === true) doSomething()
else server.on('listening', doSomething)
Run Code Online (Sandbox Code Playgroud)
编辑我当然可以(正如在其他类似问题中所建议的那样)尝试连接到该端口并查看是否有人在听.但这并不能证明我使用的特定实例正在倾听.只是有些服务正在那里听.
简单的
if (server.listening) { # }
Run Code Online (Sandbox Code Playgroud)
https://nodejs.org/api/net.html#net_server_listening
当使用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 }
Run Code Online (Sandbox Code Playgroud)
如果server.address()是null,您的实例未运行.
如果server.address()返回一个对象,则您的实例正在运行.
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |