2017-04-23 22 views
0

ノード内のTCPソケットにデータを書き込むとき、閉じられていないが相手側のクライアントがもう接続されていない(ネットワーク障害など)ため、どのように知っていますか?Node.JSのTCPソケット送信失敗を捕まえるには?

この場合、ソケットのエラーイベントは発生しません。私が正しいとすれば、TCPは、相手側からのACKパケットが全くない場合、データを送信しないようにしますか?または私は何かを誤解していますか?

答えて

0

Nodejs Net documentationで説明したとおりです。 ソケットイベントはcloseconnectdatadrainenderrorlookup、および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() 
}) 
+0

@KisGabo、上記の回答はあなたのために機能しましたか? – saada

関連する問題