在我看来,没有办法捕获与节点tls失败的连接。
tls.connect(port, host, options, function(){
// on connected
})
由于代码是异步的,我不能将其包装到try catch中。我似乎没有发现一个表示ECONNREFUSED条件失败的事件。 http://nodejs.org/api/tls.html#tls_tls_connect_options_callback
相反,这个过程只会崩溃并退出。虽然我能够用uncaughtException处理程序捕获它。但我无法找到从该处理程序的错误中恢复的方法。当程序到达时,甚至不知道哪个连接失败了。
那么我们如何捕获失败的连接?
答案 0 :(得分:5)
tls.connect
方法返回一个您应该绑定error
处理程序的流对象。
更清楚:
tls.connect(port, host, options, function(){
// on connected
});
是这个的缩写:
var stream = tls.connect(port, host, options);
stream.once('secureConnect', function(){
// on connected
});
因此,您需要添加另一个处理程序来侦听错误而不是成功连接:
var stream = tls.connect(port, host, options);
stream.once('secureConnect', function(){
// on connected
});
stream.on('error', function(err){
// on error
});
答案 1 :(得分:0)
tls.connect()
创建与指定port
和host
的新客户端连接。 tls.connect()
返回tls.TLSSocket
个对象。
您可以使用以下代码来处理错误。
var options = {
host: 'example.com',
port: 443
};
var socket = tls.connect(options, function() {
// Connected
});
socket.on('error', function(err) {
// on error
});
查找更多信息here