javascript Barebones Express应用程序基本上可以从一个请求中获得多个响应(进度)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Barebones Express应用程序基本上可以从一个请求中获得多个响应(进度)相关的知识,希望对你有一定的参考价值。

const express = require('express');
const logger = require('morgan');


const app = express();
app.use(logger('dev'));


app.get('/', function (req, res) {
  res.status(200).send(`
    <p>
      Open the devtools console
    </p>

    <script>
    let currentStreamIndex = 0;

    const xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://localhost:7897/some-stream', true);
    xhr.onprogress = function() {
      const resText = xhr.responseText;
      console.log(\`CHUNK: \${resText.substr(currentStreamIndex, resText.length)}\`);

      currentStreamIndex = resText.length
    }
    xhr.send();
    </script>
  `);
});

app.get('/some-stream', function (req, res) {
  res.writeHead(200, {
    'Content-Type': 'application/json',
    'Transfer-Encoding': 'chunked'
  });

  // Heartbeat every 30s to keep-alive
  setInterval(function() {
    res.write(' \n');
    res.emit('drain');
  }, 30 * 1000);

  setInterval(function() {
    res.write(JSON.stringify({ foo: 9999 * Math.random() }) + '\n');
    res.emit('drain');
  }, 3 * 1000);

});



const port = 7897;
app.listen(port, function () {
  console.log(`Server listening on ${port}`);
});

以上是关于javascript Barebones Express应用程序基本上可以从一个请求中获得多个响应(进度)的主要内容,如果未能解决你的问题,请参考以下文章

html Barebones Bootstrap

html D3.js:Barebones十字准线

奇怪的javascript运算符:expr >>> 0 [重复]

javascript Immediately_Invoked_Function_Expression

apache_conf Barebones Backbone路由器示例,用于具有本地URL的Apache站点,例如http:// local5 / backbone-router。

JavaScript 如何解析链式三元表达式?