我正在使用nodeJS和一些额外的模块来从一组网站进行网页抓取和媒体项目识别。
节点服务器基本上会返回页面上标识的所有项及其关联元数据的JSON标记。正如我在服务器日志中看到的那样正确生成JSON数据但是当我将其写入客户端时,由于某种原因JSON响应被终止。
某些浏览器和使用其他客户端测试了这个问题,似乎指向了response.write(响应,'utf-8')的问题,它可能没有发送整个数据或某些连接被关闭原因。我确认我的测试用例没有涉及分块,因此如果客户端仍在等待下一个数据块,则不会有客户主动关闭连接的问题。即,在这种情况下,response.write返回true,这意味着所有数据都已写入客户端。
关于什么可能导致连接被终止或响应被截断的任何指针?对于较小尺寸的JSON响应,客户端正确接收响应。
Code:
return parseDOM(page, url, function(err, response){
if(err){
res.writeHeader(200, {'Content-Type':'application/json'});
res.end('Error Parsing DOM from ' + url);
e.message = 'Error Parsing DOM';
callback(e, req, res, targetUrl);
return;
}
else {
if(response){
res.writeHeader(200, {'Content-Type':'application/json', 'Content-Length':response.length});
console.log(response);
res.write(response, 'UTF-8');
res.end();
callback(null, req, res, targetUrl);
return;
}
}
});