Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs设置数据响应超时_Node.js_File_Response_Mjpeg - Fatal编程技术网

Node.js nodejs设置数据响应超时

Node.js nodejs设置数据响应超时,node.js,file,response,mjpeg,Node.js,File,Response,Mjpeg,我试图在readstream.write之间设置一个超时,但我不断收到错误:在结束后写入。如何在res.write之间设置超时。非常感谢。这是我的密码 app.get('/video', function (req, res) { var readStream = fs.createReadStream('video.mjpeg'); res.writeHead(200, {'Content-Type': 'multipart/x-mixed- replace;boundary=T

我试图在readstream.write之间设置一个超时,但我不断收到错误:在结束后写入。如何在res.write之间设置超时。非常感谢。这是我的密码

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读取速度很快,因此无法创建视频。任何帮助都将不胜感激。

我很快就写了一行代码,了解您的需要。 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', {});
  });
});

是不是因为结束是在200毫秒之前的调用?也许你可以把它们推到一个队列中,设置两次执行之间的最小间隔?我真的不明白这一点。向响应添加延迟将如何使其工作?这应该是为
readStream.on(“end”
)调用
jobs.create('write end')