0

100 継続応答が受信されず、クライアントから要求された場合、数秒後にデータを送信する node.js でクライアントを構成しようとしています。以下のスニペットはそれを行います。ただし、continue イベントを受信して​​データの送信を開始した後、req.end() を呼び出す前に、なんらかの理由でソケットが非アクティブである場合、再びこのタイムアウトが発生し、その中のコードが実行されます。そのため、これはデータの送信を開始した後にソケットのアクティビティを監視するのに役立ちますが、解決しようとしている問題には適していません。続行イベントを受信しなくてもデータを送信します。node.js のドキュメントをスクラブしましたが、 continue イベントをリッスンする方法を説明するセクションと、タイムアウトを設定する方法を説明するセクションを見つけました。、特に継続要求を待機しているときにタイムアウトを設定する方法に関する情報が見つかりません。明るいアイデアはありますか?

req.on('socket', function(socket) {
    var timeout = 5000
    socket.setTimeout(timeout);
    socket.on('timeout', function() {
        console.log('100-continue not received. Sending data anyway...');
        fs.createReadStream(filepath, byte_range)
            .pipe(req, {end: false}).on('end', function() {
                req.end();
            });
    });
});
req.on('continue', function() {
    console.log('100-continue received. Sending data...');
    fs.createReadStream(filepath, byte_range)
        .pipe(req, { end: false }).on('end', function() {
            req.end();
        });
});
4

1 に答える 1