2012-09-18 156 views
1

我使用与的NodeJS一些额外的模块从一组的网站做网页抓取和媒体的物品识别。的Node.js的Response.Write缓冲限制限制

节点服务器基本上抛出回所指定的网页及其相关元数据的所有项目的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; 
       } 
      } 
     }); 

回答