[Node.js] http.request で [Error: socket hang up] code: 'ECONNRESET'
Node.js で HTTPS リクエストを生成するコードで [Error: socket hang up] code: ‘ECONNRESET’ というエラーが発生しました。
エラーメッセージ
Error: socket hang up
at createHangUpError (http.js:1124:15)
at Socket.socketOnEnd [as onend] (http.js:1272:23)
at TCP.onread (net.js:389:26)
HTTPS リクエストを送るのに、https モジュールじゃなく http モジュールを使っていたのが原因でした…
なので、下記のようにちゃんと https モジュールを使えばOKです。
var https = require('https');
/**
* HTTPS POST (JSON)
*
* @param {Object} jsonData
* @param {Function} callback
* @param {String} encoding
*/
function httpJsonPost(jsonData, callback, encoding) {
jsonData = jsonData || {};
encoding = encoding || 'utf8';
var jsonDataString = JSON.stringify(jsonData);
var headers = {
'Content-Type': 'application/json',
'Content-Length': jsonDataString.length
};
var options = {
host: 'api.example.com',
port: 443,
path: '/1/push',
method: 'POST',
headers : headers
};
var req = https.request(options, function(res) {
res.setEncoding(encoding);
var responseString = '';
res.on('data', function(chunk) {
responseString += chunk;
});
res.on('end', function() {
var resultObject = JSON.parse(responseString);
return callback(null, resultObject, res.statusCode, JSON.stringify(res.headers));
});
});
req.on('error', function(e) {
return callback(e);
});
req.write(jsonDataString);
req.end();
}
[参考情報]