使用Hapi流式传输HTML响应

时间:2017-10-08 18:22:05

标签: node.js hapijs

我正在尝试弄清楚如何使用Hapi流式传输HTML响应。我在下面有一个测试代码片段。这将立即返回HTTP标头,但在调用stream.end()之前,不会将任何写入流的内容发送到浏览器。 Hapi声称支持流,所以我假设我没有正确设置流。

'use strict';

const Hapi = require('hapi');
const Stream = require("stream");

const server = new Hapi.Server();
server.connection({ port: 3000, host: 'localhost' });

server.route({
  method: 'GET',
  path: '/',
  handler: (request, reply) => {
    const stream = new Stream.PassThrough();
    stream.write('<html><head><script src="https://unpkg.com/react@15.3.1/dist/react.min.js"></script>');
    reply(null, stream).type('text/html').code(200);

    setTimeout(() => {
      stream.write('</head><body>hello</body></html>');
      stream.end();
    }, 2000);
  }
});

server.start((err) => {
  if (err) {
    throw err;
  }
});

此处的用例是能够发送HTML的<head>,以便浏览器可以开始下载资源,而其余内容仍在服务器上生成。

0 个答案:

没有答案