当试图连接到不监听的主机时,Nodejs net不会引发错误

我正在尝试使用Node.js net模块testing远程主机是否正在侦听:

 var net = require('net') var client = net.connect({port:3000, host:remoteHostIP},function(){ }); client.on('error', function(err){ console.log("Error: "+err.message); }); 

我期望net.connect会抛出一个错误,如果它不能连接,但事实并非如此。

另外client.on('error')不会抛出一个错误。

我如何检查连接是否可行?

当连接超时大约一分钟没有数据传输时,它会抛出一个错误。

Error: connect ETIMEDOUT <ip>:3000

如果在分配的时间内没有活动,使用client.setTimeout()来发起callback。

问题中发布的代码工作正常:

 node app.js Error: connect ECONNREFUSED 

这个问题是由Docker的Virtualbox VM(在开发人员机器上运行)引起的,它已经为端口3000configuration了portforwardingfunction,并抓取了localhostnet connect请求。