gunzip使用zlib在node.js中分割TCP响应

Node.js v9.2.1

问题:

  1. 在node.js中使用内置的zlib模块时是否可以放弃标题检查?
  2. zlib在这个“标题检查”期间寻找的是什么?/我能欺骗吗?

我见过的所有例子都是使用某种types的库(http,request),它们在执行zlib之前实现了至less一些头parsing。 那么zlib实际上看起来不是什么原始的反应。 同样在这些例子中,closures连接时触发“结束”事件。 我的例子将没有这样的事件。


对于这个问题,让我们假设我正在使用一个死的简单的net.Socket与持久的TCP连接,如下所示:

var net = require('net'); var chunks = []; var socket = net.connect({ port: foo, host: bar }, () => { socket.write('<perfectRequestHeaders>', null, () => { socket.on('data', (chunk) => { chunks.push(chunk); }) }) }) 

然后,当我决定所有的块已经收到。 (没有“结束”事件,因为连接保持打开状态,只有当我看到终止块时,我才完全知道响应)

 var zlib = require('zlib'); var resBuffer = Buffer.concate(chunks); var headerEndIndex = resBuffer.indexOf('\r\n\r\n'); var headerBuffer = resBuffer.slice(0, headerEndIndex), bodyBuffer = resBuffer.slice(headerEndIndex + 4); // assume headerBuffer & bodyBuffer are what their names imply function bodyParser(bodyBuffer) { // assume it parses out all the stuff that // isn't part of the actual chunked data return parsedBodyBuffer; } // complains about header check // what must be done to stop zlib from whining??? zlib.gunzipSync(bodyParser(bodyBuffer)).toString('utf-8'); 

任何帮助是受欢迎的。 谢谢。