对于这样的例子: https://bravenewmethod.com/2011/02/21/node-js-tls-client-example/
或在我自己的代码中:
client = tls.connect(port, host, tlsOptions, function() {
}
client.on('end', function(data) {
}
这些生命周期方法何时被实际调用?在文档https://nodejs.org/api/tls.html中,我没有看到任何相关内容。谢谢。
答案 0 :(得分:3)
您需要在文档中查找TLS套接字继承的TCP套接字的Net模块。 tls.TLSSocket
是net.Socket
的子类。对于类层次结构的文档而言,这是一个常见问题,您不会意识到基类文档中记录了很多内容。在that doc中,它为end
事件说明了这一点:
当套接字的另一端发送FIN数据包时发出,因此 结束套接字的可读面。
默认情况下(allowHalfOpen为false)套接字将发送FIN数据包 一旦写出文件描述符就返回并销毁它 待写队列。但是,如果allowHalfOpen设置为true,则 套接字不会自动结束()它的可写端,允许 用户写入任意数量的数据。用户必须调用end() 显式关闭连接(即发回FIN数据包)。
对于close
事件,that same doc说明了这一点:
插座完全关闭后发出。参数had_error是一个 boolean,表示套接字由于传输而关闭 错误。
这意味着close
事件发生在end
事件之后,因为在收到end
事件时套接字可能仍然至少部分打开。
因此,当对方告诉您它不再接受数据(收到FIN数据包)时,您将获得end
,当套接字现在完全关闭时,您将获得close
。 / p>
答案 1 :(得分:0)
tls.TLSSocket
类是net.Socket
类的实例。您可以在该文档中找到有关事件和方法的其他信息(https://nodejs.org/api/net.html#net_class_net_socket)。最有可能的是net.Socket#end
如果我不得不猜测。