我有这个代码向远程API发出POST请求。
var method = 'POST';
var params = {foo: 'bar', /* something else */};
var path = '/method/somemethod';
var host = 'my.host.com';
var body = querystring.stringify(params);
var options = {
host: host,
port: 443,
path: path,
method: method,
agent: false
};
var req = https.request(options);
req.on('response', function(res) {
var chunks = [];
res.on('data', function(chunk) {
chunks.push(chunk);
});
res.on('end', function() {
var data = Buffer.concat(chunks).toString('utf-8');
// done
});
});
if (method == 'POST') {
req.setHeader('Content-Type', 'application/x-www-form-urlencoded')
req.setHeader('Content-Length', Buffer.byteLength(body));
req.end(body);
} else {
req.end();
}
req.on('error', function(e) {
log('error:', e);
});
大部分时间它工作正常,但SOMETIMES套接字挂起。
(顺便说一句,它也发生在GET请求中。)
我确信我的互联网连接或远程服务器没有问题。我尝试使用其他工具/语言发出此请求,一切正常,只有node.js偶尔会挂断。
Node.js版本是4.1.1。
通常我的应用程序会同时发出几个请求,如果这很重要(例如,不仅仅是一个请求,而是两个异步请求。我不知道它会如何影响我的问题,我只是出于关于什么可能是什么的理论错误。或者SSL握手在某些时候失败?)。
我见过另一个有类似抱怨的帖子,但他们要么没有帮助我,要么没有帮助。
非常感谢任何帮助。