Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js SSE返回的数据比文件大小大x50_Node.js_Hapi_Eventsource - Fatal编程技术网

Node.js SSE返回的数据比文件大小大x50

Node.js SSE返回的数据比文件大小大x50,node.js,hapi,eventsource,Node.js,Hapi,Eventsource,我们有一个正在运行的hapijs服务器,它返回一个SSE流,其中包含从可读的SQL server(不是MySQL)存储过程返回的行 我们观察到50000行以1000个事件的块返回。Chrome和Firefox都表示请求中返回的数据大小略低于250mbs。我们将返回的数据(JSON)复制到一个.txt文件中,发现数据只有20mb 内容编码设置为标识。我们实现了SUSIE,并使用它返回事件源 let result = await server.methods.services.worklist.

我们有一个正在运行的hapijs服务器,它返回一个SSE流,其中包含从可读的SQL server(不是MySQL)存储过程返回的行

我们观察到50000行以1000个事件的块返回。Chrome和Firefox都表示请求中返回的数据大小略低于250mbs。我们将返回的数据(JSON)复制到一个.txt文件中,发现数据只有20mb

内容编码设置为标识。我们实现了SUSIE,并使用它返回事件源

  let result = await server.methods.services.worklist.getData(request.query);
  let rowsToProcess = [];
  let chunkSizeSmall = 50;    // @todo move this to the config
  let chunkSizeLarge = 1000;  // @todo move this to the config
  let chunkSize = chunkSizeSmall;

  result.on('recordset', columns => {
    h.event({ event: 'columns', data: columns })
  });

  result.on('row', row => {
    rowsToProcess.push(row);
    if (rowsToProcess.length >= chunkSize) {  
      chunkSize = chunkSizeLarge;                       
      result.pause();
      processRows();
    }
  });

  result.on('done', () => {
    processRows();
    h.event(null)
  });

  function processRows() {
    // process rows
    h.event({ event: 'data', data: rowsToProcess })
    rowsToProcess = [];
    result.resume();
  }
  return h.event({});

我们希望输出的大小与JSON的文件大小相同或相近。

我在我的repo中看到了类似的问题。eventStream大小是所传输数据大小的50倍。