Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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
Javascript 如何使用res.write从Node js发送多个响应,以便数据显示在客户端中?_Javascript_Html_Css_Node.js_Reactjs - Fatal编程技术网

Javascript 如何使用res.write从Node js发送多个响应,以便数据显示在客户端中?

Javascript 如何使用res.write从Node js发送多个响应,以便数据显示在客户端中?,javascript,html,css,node.js,reactjs,Javascript,Html,Css,Node.js,Reactjs,我想从res.write立即将数据发送到客户端,但数据在一次响应中只发送一次。如何发送多个响应,以便将数据实时发送到客户端 app.get('/api/simulator', (req,res) => { res.setHeader('Content-Type','text/html'); var spawn = require('child_process').spawn, ls = spawn('../abc.sh'); ls.stdout.on('data',

我想从res.write立即将数据发送到客户端,但数据在一次响应中只发送一次。如何发送多个响应,以便将数据实时发送到客户端

app.get('/api/simulator', (req,res) => {


    res.setHeader('Content-Type','text/html');
    var spawn = require('child_process').spawn,
ls = spawn('../abc.sh');

ls.stdout.on('data', function (data) {
  console.log('stdout: ' + data.toString());
  res.write(data.toString());
});

ls.stderr.on('data', function (data) {
  console.log('stderr: ' + data.toString());
});

ls.on('exit', function (code) {
    console.log('child process exited with code ' + code.toString());
    res.end();
  });

    });

我想您只需添加另一行res.write(): -例如:

ls.stdout.on('data', function (data) {
  console.log('stdout: ' + data.toString());
  res.write(data.toString());
  response.write("foo");
  response.write("bar");
});

一个请求只能有一个响应,您必须为多个响应发出多个请求。更好的解决方案是用于流式处理。问题是,在几乎所有情况下,浏览器都会等待http请求完成,然后才会显示任何内容或向ajax调用返回任何内容。因此,即使您可能使用
res.write()
以增量方式发送数据,浏览器中的客户端通常在数据全部到达之前不会显示数据。如果你能更具体地说明你想做什么,也许我们可以提供更详细的帮助。webSocket连接允许您发送客户端立即接收的单个数据块。您可以依次添加res.write。