我正在尝试在没有运气的情况下使用http.request的HTTP客户端设置超时.到目前为止我所做的是这样的:
var options = { ... }
var req = http.request(options, function(res) {
// Usual stuff: on(data), on(end), chunks, etc...
}
/* This does not work TOO MUCH... sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */
req.socket.setTimeout(myTimeout);
req.socket.on('timeout', function() {
req.abort();
});
req.write('something');
req.end();
Run Code Online (Sandbox Code Playgroud)
任何提示?
实际上,如果节点是单线程的,我不完全理解为什么我的代码不在堆栈跟踪中.也许我从根本上误解了一些问题,但是为什么我的应用程序有时会因为堆栈跟踪没有我写的任何东西而死?
我正在使用node/express编写一个非常简单的代理服务器.作为一个例子,我定期得到这个"套接字挂起错误":
Error: socket hang up
at createHangUpError (_http_client.js:250:15)
at Socket.socketOnEnd (_http_client.js:342:23)
at emitNone (events.js:91:20)
at Socket.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:926:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9) code: 'ECONNRESET' }
Run Code Online (Sandbox Code Playgroud)
由于堆栈跟踪中的javascript文件都不是我的,我不知道它来自何处.它基本上是试验和错误,试图捕获错误并添加.on样式错误处理程序,直到找到正确的位置.
我觉得我从根本上错过了一些东西 - 为了调试这样的错误,我应该做些什么呢?如果我看不到(在我的代码中)是什么导致它,我怎么知道在哪里处理它?我怎么知道我是否应该使用try/catch块,或类似的东西request.on('error') {...}?
我试图抓取一个网站。我正在使用库https://github.com/request/request,但出现此错误:
Error: socket hang up
at createHangUpError (http.js:1476:15)
at Socket.socketOnEnd (http.js:1572:23)
at Socket.g (events.js:180:16)
at Socket.emit (events.js:117:20)
at _stream_readable.js:943:16
at process._tickDomainCallback (node.js:463:13) +0ms
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?我也尝试重新安装该软件包,但我遇到了同样的错误......感谢帮助。
我在发送请求时收到套接字挂断错误消息。根据观察请求正在处理,但在发送响应时,我收到以下响应:
{
"success":false,
"error":{
"name":"RequestError","message":"Error: socket hang up","cause":{"code":"ECONNRESET"},
"error":{"code":"ECONNRESET"},
"options":{"uri":"request url","simple":true,"resolveWithFullResponse":false,"transform2xxOnly":false}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码:
var options = {
uri: 'request url',
};
request(options).then(function(data) {
res.json({
success: true,
data: data
});
})
.catch(function (err) {
res.json({
success: false,
error: err,
});
});
Run Code Online (Sandbox Code Playgroud) 我有一个 Nodejs 应用程序,它聚合来自各个网站的内容。发出请求以使用请求流从不同源异步获取提要。当发出请求时,我经常收到套接字挂起错误。
err in accessing the link { Error: socket hang up
at createHangUpError (_http_client.js:331:15)
at TLSSocket.socketOnEnd (_http_client.js:423:23)
at emitNone (events.js:111:20)
at TLSSocket.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickDomainCallback (internal/process/next_tick.js:219:9) code: 'ECONNRESET' } https://arstechnica.com/?p=1488489
Run Code Online (Sandbox Code Playgroud)
环境详细信息:节点版本 - v8.12.0
尝试了相关 SO 帖子中给出的一些建议,但我仍然遇到相同的错误。 NodeJS - “套接字挂起”实际上是什么意思?
import request from 'request';
import FeedParser from 'feedparser';
const extractor = require('unfluff');
export const getFeedsFromSource = function (urlfeed, etag, LastModified, callback) {
console.log(urlfeed, etag, LastModified);
const req = request({
method: 'GET',
url: urlfeed, …Run Code Online (Sandbox Code Playgroud) 我按照node http文档写了一个delete请求到本地服务器,但是收到socket hang up错误,我查过的类似问题是:
但没有人真正为我的场景工作。
我相信这是代码错误,因为我使用邮递员它对我有用,以下是我的代码
var options = {
hostname: 'localhost',
port: 3000,
path: '/accounts/abc'
method: 'DELETE',
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
};
var order = {
"secret": "abc_secret"
};
var content = JSON.stringify(order);
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
res.on('data', function(chunk) {
console.log('resp: ' + chunk);
});
});
req.on('error', function(err) {
console.error('error: ' , err.stack.split("\n"));
});
req.write(content);
req.end();
Run Code Online (Sandbox Code Playgroud)
错误是:
error: [ 'Error: socket hang up',
' …Run Code Online (Sandbox Code Playgroud)