2016-08-22 15 views
1

私はreadstream.writeの間にタイムアウトを設定しようとしていますが、エラーが発生しています。どのように私はres.writeの間にタイムアウトを設定できますか?ありがとうございました。ここに私のコードです。私は、クライアント側で映像を表示しようとしていますnodejsがデータ応答のタイムアウトを設定しました

app.get('/video', function (req, res) { 


    var readStream = fs.createReadStream('video.mjpeg'); 
    res.writeHead(200, {'Content-Type': 'multipart/x-mixed- replace;boundary=ThisString'}); 

    readStream.on("data", (chunk) => { 
    res.write(chunk, 'binary'); 

    setTimeout(function() { 
     res.write('ThisString'); 
    }, 200); 
    console.log("Writing to client"); 
    }); 

    readStream.on("end",() => { 
    readStream.destroy(); 
    res.end(); 
    console.log("End of data"); 
    }); 
}); 

は、問題はMJPEGがビデオを作成することはできませんすぐに読み取られてしまうことです。どんな助けもありがとう。

+0

エンドは200ms前に呼び出されていますか? –

+0

2つの実行の間の最小間隔を設定するキューにそれらを押し込むことができますか?私は本当にここでポイントを得ることはありません。 –

+0

応答を遅らせることで、動作させる方法を教えてください。 – Matt

答えて

0

私はあなたが必要と理解しているコードをすばやく書きました。 StackOverflowは私のお気に入りのIDEではありませんので、あまり重視しないでください^^ readStreamは実際にはわかりませんが、dataというイベントは多くの時間書き込むと呼ばれていますか? キューが先行チャンクを待機しており、そのタイムアウトが正しく完了しています。 それは必要なものですか?

var kue = require('kue'), 
    jobs = kue.createQueue(); 

app.get('/video', function (req, res) { 

    var readStream = fs.createReadStream('video.mjpeg'); 
    res.writeHead(200, {'Content-Type': 'multipart/x-mixed- replace;boundary=ThisString'}); 

    jobs.process('write chunck', function (job, done) { 
    setTimeout(function() { 
     res.write(job.chunck, 'binary'); 
     done && done(); 
    }, 200); 
    }); 

    jobs.process('write end', function(job, done) { 
    readStream.destroy(); 
    res.end(); 
    console.log("End of data"); 
    done & done(); 
    }); 

    readStream.on("data", (chunk) => { 
    jobs.create('write chunck', { 
     chunk: chunk 
    }); 
    }); 

    readStream.on("end",() => { 
    jobs.create('write end', {}); 
    }); 
}); 
+0

'readStream.on(" end "'?)の 'jobs.create( 'write end')'を呼び出すべきでしょうか? – Matt

+0

うん、うんうん。 –

関連する問題