当试图连接到不监听的主机时,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(在开发人员机器上运行)引起的,它已经为端口3000
configuration了portforwardingfunction,并抓取了localhost
的net connect
请求。