繁体   English   中英

从gzip压缩的资源中的oboe.js流JSON

[英]Streaming JSON with oboe.js from gzipped resource

我将一些json数据作为压缩文件存储在服务器上(以减少传输的数据量,也减少服务器上的磁盘使用量)。

现在,我想在客户端解压缩并解析json数据(浏览器运行react / node)。

我认为,使用oboe.js可能是此任务的适当选择。 不幸的是,在浏览器中工作时似乎无法直接传递双簧管流。 我依靠的解决方案是将数据块解压缩后再发送给双簧管(请参阅本文底部的代码)。

尽管这样做确实可行,但是如果节点侦听器需要一些时间来处理节点,它会冻结浏览器一段时间(当然,解析数据将花费一些时间,但是我希望该应用程序保持响应状态,甚至可能更新查看已处理的数据)。

我怀疑所有数据基本上都立即馈给了双簧管,而不是等到最后一个块被读取。 这个对吗? 是否有适当的方法来减慢馈送给双簧管的数据量,或者是否有更直接的方式处理gzip流和双簧管?

var o = oboe();
var gunzip = zlib.createGunzip();

gunzip.on('data', (chunk) => o.emit('data', chunk.toString()))
      .on('end', o.emit('end'));

request(options).on('response', response => {
  o.emit('start', response.statusCode, response.headers);
  response.pipe(gunzip);
};

o.node('{name}', () => {
  //Do stuff with node
  return oboe.drop;
});

由于第4-5行中的“包装器”,您似乎无法正确使用管道功能(例如速度调整)。只需将其删除即可。

有关管道Node.js的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM