簡體   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