0
ノード内のTCPソケットにデータを書き込むとき、閉じられていないが相手側のクライアントがもう接続されていない(ネットワーク障害など)ため、どのように知っていますか?Node.JSのTCPソケット送信失敗を捕まえるには?
この場合、ソケットのエラーイベントは発生しません。私が正しいとすれば、TCPは、相手側からのACKパケットが全くない場合、データを送信しないようにしますか?または私は何かを誤解していますか?
ノード内のTCPソケットにデータを書き込むとき、閉じられていないが相手側のクライアントがもう接続されていない(ネットワーク障害など)ため、どのように知っていますか?Node.JSのTCPソケット送信失敗を捕まえるには?
この場合、ソケットのエラーイベントは発生しません。私が正しいとすれば、TCPは、相手側からのACKパケットが全くない場合、データを送信しないようにしますか?または私は何かを誤解していますか?
Nodejs Net documentationで説明したとおりです。 ソケットイベントはclose
、connect
、data
、drain
、end
、error
、lookup
、およびtimeout
です。
error
イベントが発生していないので、ソケットのもう一方の端がFIN
パケットを送信したときに発生するend
イベントを監視してみてください。
socket.on('end',() => console.log('socket has ended'))
また、ネットワークの障害や予期しないネットワークエッジのケースが予想される場合は、タイムアウトをいつでも設定してそのように処理できます。
socket.setTimeout(60000) // 60 seconds
socket.on('timeout',() => {
console.warn('socket has timed out')
socket.write('socket has timed out')
socket.end()
})
@KisGabo、上記の回答はあなたのために機能しましたか? – saada