1
成功したconnect.Iでsocket
インスタンスで解決する必要がある方法で、tls.connect
メソッドを約束する正しい方法は何でしょうか?少し難解です接続中のエラーと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)
})
})
}
これはどういう仕組みですか?アプリケーションが起動しようとしているときに1回だけ接続し、最初の接続後に同じソケットを再利用するのは何ですか?アプリケーションの開始と接続がソケットオブジェクトで解決されると言うことができます。あなたの例では、ソケットに読み込み/書き込み中にエラーが発生した場合に何が起きるか2時間後に何が起こるのか、この行が 'socket.on( 'error'、reject)' – Srle
と呼ばれるとどうなりますか?約束はコンテンツの接続ではなく、コンテンツのためのものです。 –