我如何使用Hapi将数据stream式传输到浏览器?

我试图使用stream发送数据到Hapi的浏览器,但不能指望我们如何。 具体来说,我正在使用请求模块。 根据文档reply对象接受一个stream,所以我试过了:

 reply(request.get('https://google.com')); 

抛出一个错误。 在文档中说stream对象必须与streams2兼容,然后我试着:

 reply(streams2(request.get('https://google.com'))); 

现在,不会抛出服务器端错误,但在浏览器中,请求永远不会加载(使用chrome)。

然后我尝试了这个:

 var stream = request.get('https://google.com'); stream.on('data', data => console.log(data)); reply(streams2(stream)); 

而在控制台的数据输出,所以我知道stream不是问题,而是哈比。 我怎样才能在Hapistream式传输工作?

尝试使用Readable.wrap

 var Readable = require('stream').Readable; ... function (request, reply) { var s = Request('http://www.google.com'); reply(new Readable().wrap(s)); } 

使用Node 0.10.x和hapi 8.xx进行testing在我的代码示例中, Request是节点请求模块, request是传入的hapi请求对象。

UPDATE

另一个可能的解决scheme是从Request侦听“响应”事件 ,然后用正确的读取streamhttp.IncomingMessage进行reply

 function (request, reply) { Request('http://www.google.com') .on('response', function (response) { reply(response); }); } 

这需要更less的步骤,并且还允许开发者在传输之前将用户定义的属性附加到stream。 这可以用于设置200以外的状态码。