繁体   English   中英

节点js TLS未连接错误连接失败?怎么抓?

[英]Node js TLS uncaught error on connection fail? How to catch?

在我看来,没有办法捕获与节点tls失败的连接。

tls.connect(port, host, options, function(){
    // on connected
})

由于代码是异步的,我不能将它包装成try catch。 我似乎没有发现一个表示ECONNREFUSED条件失败的事件。 http://nodejs.org/api/tls.html#tls_tls_connect_options_callback

相反,这个过程只是崩溃和退出。 虽然我能够用uncaughtException处理程序捕获它。 但我无法找到从该处理程序的错误中恢复的方法。 当程序到达时,甚至不知道哪个连接失败了。

那么我们如何捕获失败的连接?

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
});

tls.connect()创建与给定porthost的新客户端连接。 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
});

在此处查找更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM