Node.js response.write缓冲区限制

时间:2012-09-18 14:36:48

标签: node.js

我正在使用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;
                }
            }
        }); 

1 个答案:

答案 0 :(得分:2)

对不起。我的错。我看到内容长度是错误的。通过问题确定解决方案: Node.js cuts off files when serving over HTTPS