在nodejs中解析分块编码的http响应的最佳方法是什么?

时间:2015-10-08 09:35:58

标签: javascript node.js http npm

我必须使用自定义方法名STATS,nodejs http模块不支持。

所以,我决定使用tcp socket:

feed.socket = net.createConnection(config.port, config.host);
feed.socket.on('connect', function() {
  feed.socket.write(
    'STATS / HTTP/1.1\r\n' + 
    'Authorization: Basic ' + new Buffer(config.user + ':' + config.password).toString('base64') + '\r\n' +
    'User-Agent: custom-http-client/0.0.1\r\n' + 
    'Host: ' + config.host + '\r\n' +
    'Accept: */*\r\n\r\n'
  );
});

feed.socket.on('data', function(chunk) {
  console.log(chunk.toString());
});

执行连接后,服务器发送标题&然后开始通过持久连接发送数据块:

HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Wed, 07 Oct 2015 13:23:54 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Capability: streamlist stats

1fcf // data size
...DATA...

我可以检测并忽略标题,我可以连接来自不同块的字符串行,但是手动处理数据大小非常复杂,它们是以块的形式发送的。

也许有一个解决方案,可以处理标题,分块编码数据和返回逐行数据?

0 个答案:

没有答案