[英]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.