1
什么是正确的promisifying方法tls.connect
方法,它应该解决与socket
实例上成功connect.I发现它有点棘手,因为它似乎没有出路该框用于区分连接时的错误和与TCP服务器通信期间的常规错误(连接成功后)。虽然看起来有点臭也可能是像promisify节点tls.connect方法
const connect = (port, host, options) => {
/**
* Some workaround to be able
* to distinguish between error on connection
* and error after connection was established successfully
*/
let connected = false
return new Promise((resolve, reject) => {
const socket = tls.connect(port, host, options,() => {
connected = true
return resolve(socket)
})
socket.on('data', (data) => {...})
socket.on('end',() => {...})
socket.on('disconnect',() => {...})
socket.on('error', (err) => {
if (!connected) {
return reject(err)
}
console.error(err)
})
})
}
这是如何工作的?我们所要做的就是在应用即将启动时连接一次,并在初始连接后重新使用相同的套接字。可以说,应用程序启动并连接解决与套接字对象。在你的例子中,如果在读/写socket的过程中出现错误时,会发生什么后会发生2小时或什么,当调用这行时会发生什么'socket.on('error',reject)' – Srle
绝对没有,承诺只是为了连接而不是内容。 –