【问题标题】:TLS Error: socket hang up in nodejsTLS 错误:nodejs 中的套接字挂起
【发布时间】:2014-03-01 01:05:08
【问题描述】:

我正在尝试使用 nodejs 中的 tls 连接服务器。这是我的代码:

var options = {
  rejectUnauthorized: false //self signed certificate
};
co = require("tls").connect(5200, "my_host", options, function(){
   co.on("data", function(data) {
      //do domething
   })

}

这是简化的代码。如果我捕捉到错误事件,我有一个ECONNRESET 错误,如果我没有,我有这个跟踪:

Error: socket hang up
at SecurePair.error (tls.js:1001:23)
at EncryptedStream.CryptoStream._done (tls.js:697:22)
at EncryptedStream.read [as _read] (tls.js:493:12)
at EncryptedStream.Readable.read (_stream_readable.js:320:10)
at CleartextStream.onCryptoStreamFinish (tls.js:301:47)
at CleartextStream.g (events.js:175:14)
at CleartextStream.EventEmitter.emit (events.js:92:17)
at finishMaybe (_stream_writable.js:354:12)
at endWritable (_stream_writable.js:361:3)
at CleartextStream.Writable.end (_stream_writable.js:339:5)

如果我使用openssl s_client -connect my_host:5200 直接连接到我的服务器,效果会很好。奇怪的是,节点版本为 0.10.*,它适用于 ubuntu 10.04,但不适用于我的 mac,也不适用于 ubuntu 12.04。我的服务器也是一个运行 ubuntu 10.04 的 nodejs 程序。不确定所有这些是否相关,但任何帮助都会很棒! 干杯

【问题讨论】:

    标签: node.js sockets ubuntu ssl


    【解决方案1】:

    根据您的客户端/服务器正在执行的操作,此处可能存在时间问题。您希望在回调之外设置事件处理程序,以确保在数据流动之前设置它们。试试这个:

    var options = {
      rejectUnauthorized: false //self signed certificate
    };
    co = require("tls").connect(5200, "my_host", options, function(){
      //do something
    });
    
    co.on("data", function(data) {
      //do something
    }); 
    

    【讨论】:

      猜你喜欢
      • 2015-09-13
      • 2014-10-02
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 2021-07-29
      • 2013-10-05
      相关资源
      最近更新 更多