簡體   English   中英

NodeJS HTTP請求POST ERROR套接字掛起

[英]NodeJS HTTP request POST ERROR socket hang up

嗨,我遇到了一個問題,在給定更大數量的json對象數組的情況下對NodeJS執行HTTP請求。 給定json對象的小數組,請求工作正常。 但是,如果我嘗試增加json的size數組,我收到錯誤:socket hang up {“error”:{“code”:“ECONNRESET”}}。 是否需要執行多次寫入? 或者在另一端發生了什么問題?

在此先感謝您抽出寶貴的時間!

    // data is a json object

    var post_data = JSON.stringify(data);
    var buf = new Buffer(post_data);
    var len = buf.length;

    var options = {
        hostname: address,
        port: port,
        path: pathName,
        method: 'PUT',
        headers: {
            'Content-Type':'application/json',
            'Content-Length': len,
            'Transfer-Encoding':'chunked'
        }
    };

    // http call to REST API server
    var req = restHttp.request(options, function(res) {

        console.log('server PUT response received.');
        var resData = '';
        res.on('data', function(replyData) {

            // Check reply data for error.
            console.log(replyData.toString('utf8'));
            if(replyData !== 'undefined')
                resData += replyData;
        });

        res.on('end', function() {          
            callback(JSON.parse(resData));
        });
    }); 


    req.write(buf);
    req.end();

您可以流式傳輸請求正文。

如果buf中的數據是可讀流,那么你可以只執行buf.pipe(req)

例如,如果當前目錄包含帶有JSON的文件data.json ,則可以執行此操作

var buf = fs.createReadStream(__dirname + '/data.json');

創建一個ReadStream對象。 然后你可以把它管道給你req

buf.pipe(req);

一旦完成流式傳輸,pipe命令將調用req.end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM