使用Node通过HTTP发送更大的JSON字符串

时间:2016-08-30 20:09:30

标签: json node.js xmlhttprequest

我正在努力将HTTP服务器中的JSON数据发送到我的客户端。我已经成功地向客户端发送了较小的JSON响应,但是一旦我必须等待并在发送之前收集所有数据,我的代码就无法正常运行。我正在使用.on(' data',function(){})方法来收集数据并将其重新构建,然后使用.on(' end',function(){ })尝试发送数据,但我的代码永远不会进入这些方法。

我发送大小的JSON数据的代码如下:

  exports.sendJson = function (req, resp, data) {

    resp.writeHead(200, "Valid EndPoints", { "Content-Type": "application/json" });

    var payload = '';

    resp.on('data', function(data){
          payload += data;
      })
      .on('end', function(){
        resp.write(JSON.stringify(payload));
      });
    resp.end();
  };

我的代码适用于较小的JSON数据,如下所示:

 exports.sendJson = function (req, resp, data) {
     resp.writeHead(200, { "Content-Type": "application/json" });

     if(data) {
      resp.write(JSON.stringify(data));
     }

      resp.end();
  };

提前致谢。到目前为止,我真的很高兴。

1 个答案:

答案 0 :(得分:0)

HTTP服务器响应是Writable;它不会发出data个事件。

如果你传递给sendJson的{​​{1}}参数的东西是一个对象,你就可以完全按照你在第二个例子中所做的那样做。没有必要缓冲任何东西。 (如果您传递给data的内容是一个流,只需将sendJson传递给响应。)

(解析收到的JSON时,必须缓冲从Readable获取的数据 - 客户端上的HTTP响应。)