当前位置: 首页 > 面试题库 >

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

吴松
2023-03-14
问题内容

我正在尝试使用流使用Hapi将数据发送到浏览器,但无法确定我们的方式。具体来说,我正在使用请求模块。根据文档,该reply对象接受流,所以我尝试了:

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

引发错误。在文档中说流对象必须与stream2兼容,所以我尝试了:

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));

并且在控制台 输出了数据,所以我知道流不是问题,而是Hapi。我如何在Hapi中进行流式传输工作?


问题答案:

尝试使用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进行了测试。在我的代码示例Request中,node-
request模块request是传入的hapi请求对象。

更新

另一种可能的解决办法是监听“响应”事件从Request然后replyhttp.IncomingMessage这是一个适当的读操作流。

function (request, reply) {

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

这需要较少的步骤,并且还允许开发人员在传输之前将用户定义的属性附加到流。这对于设置200以外的状态代码很有用。



 类似资料:
  • 我正在尝试使用apache flume将数据加载到hbase中。当我使用flume将数据传输到hadoop时,它工作得很好。但是当我启动flume代理将数据加载到hbase时,我得到了NoClassDefFoundError。 这是我的水槽配置: flume-env.sh 代理4.conf

  • 我第一次尝试Kafka,并使用AWS MSK设置Kafka群集。目标是将数据从MySQL服务器流式传输到Postgresql。我使用debezium MySQL连接器作为源,使用Confluent JDBC连接器作为接收器。 MySQL配置: 注册Mysql连接器后,其状态为“正在运行”,并捕获MySQL表中所做的更改,并以以下格式在消费者控制台中显示结果: 我的第一个问题:在表中“金额”列是“十

  • 问题内容: 我想使用elasticsearch-river-mysql以便将数据从MySQL数据库连续传输到ElasticSearch。我是ES和Rivers的初学者,所以希望您能为我的问题提供帮助。 据我所知,数据将从MySQL数据库流式传输到ES集群,后者将自动对其进行索引。那是对的吗?我需要了解任何超时或限制吗? 关系数据库表之间的外键关系将如何转换为ES?包含外键的表行是否将成为ES文档的

  • 如果有人能把我引向正确的方向,我会很感激,这样我就知道从哪里开始了。

  • 问题内容: 我想将录制的音频从浏览器实时流传输到服务器并播放。该服务器最终将成为播放这些音频流的嵌入式设备。 到目前为止,我已经成功地录制了音频并将其编码为WAVE文件,并使用网络音频API并按照本教程在浏览器上播放。 现在,我有了.WAV编码的Blob流。我试图找到通过Web套接字连接将其流式传输到Node.js后端并使用npm模块播放它们的方法。但是我没有运气。 有人知道我应该遵循的任何资源或

  • 问题内容: 我有一个像这样的文件: 而且我想按行转移列,因此输出应如下所示: 我写了这个命令: 问题是此命令将所有内容都放在一行上!所以输出是这样的: 问题答案: 这可能起作用: 在Ideone上观看它。