response.on(' end')在收到所有块之前调用,仅在我的计算机上

时间:2015-07-29 10:25:29

标签: node.js

对于一定数量的变量(~100),我正在进行以下相当简单的系列请求(不同的主机名和路径也会出现问题,但是当很多类似的请求被发送到同一主机时)

var http = require('http');
var request = http.request({
    hostname: 'lookup.dbpedia.org',
    path: '/api/search/KeywordSearch?QueryString=' + [VARIABLE],
    headers: {
        'Accept': 'application/json'
    }
});
request.on('response', function (response) {
    var data = [];
    response.on('data', function (chunk) {
        data.push(chunk);
    });
    response.on('end', function () {
        var object = JSON.parse(data.join(''))
    });
});
request.end();

问题是响应的最后一块有时没有被response.on('data')捕获,因此JSON.parse会出错。 更奇怪的是,这只会发生在我的计算机上,而不会发生在另一个上(两者都是Windows 7)。

对于节点v0.12.2和v0.12.7,问题仍然存在,并且到目前为止我可以测试,这是一个节点问题,因为curl之类的东西总是返回整个响应。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

原来是我的防病毒实时屏蔽阻止了请求的最后一块(我使用Avast)。所以在某种程度上,它类似于this question