1

我正在使用带有一些附加模块的 nodeJS 来从一组网站中进行网页抓取和媒体项目识别。

节点服务器基本上会返回页面上标识的所有项目及其相关元数据的 JSON 标记。JSON 数据生成正确,因为我可以在服务器日志中看到它,但是当我将其写入客户端时,由于某种原因 JSON 响应被终止。

我使用所有浏览器并使用其他客户端对此进行了测试,这似乎表明 response.write(response, '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;
                }
            }
        }); 
4

1 回答 1

2

对不起。我的错。我看到内容长度是错误的。通过问题确定的解决方案: Node.js 在通过 HTTPS 提供服务时切断文件

于 2012-09-18T14:42:57.500 回答