2016-08-30 12 views
1

HTTPサーバーからクライアントにJSONデータを送信する作業を進めています。小さなサイズのJSONレスポンスをクライアントに送信するのに成功しましたが、送信する前にすべてのデータを収集してから収集しなければ、コードが正しく機能しません。私は.on( 'data'、function(){})メソッドを使ってデータを収集し、それをビルドし、.on( 'end'、function(){})を使ってデータを送信しようとします。コードは決してこれらの方法のいずれにも入りません。ノードを使用してHTTP経由でより大きいJSON文字列を送信する

より大きなサイズのJSONデータを送信するための私のコードは以下の通りです:次のように小さいサイズの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(); 
    }; 

私のコードは次のとおりです。事前に

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

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

     resp.end(); 
    }; 

感謝。私は実際にはこれまでずっと幸せです。

+0

'data'イベントのエミッタを表示できますか? – DrakaSAN

答えて

0

HTTPサーバーの応答はWritableです。 dataイベントは発生しません。

sendJsonのパラメータdataに渡すものがオブジェクトの場合は、2番目の例で行っていることをそのまま実行してください。何もバッファリングする必要はありません。 (あなたがsendJsonに渡す事はストリーム、応答にちょうどpipeそれがある場合。)

(JSONを受信解析するとき、あなたは あなたが Readableから取得するデータバッファリングしなければならない - クライアントのHTTPレスポンスを。)

関連する問題