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