跳到主要内容
CNode

http.get 怎么捕获timeout(网络超时)事件?

问答
Aa316523235发布于 11 年前最后回复 11 年前
9114360

平时是这样

http.get(indexUrl, function(res) {
	var body = [];
	res.on('data', function(chunk) {
		body.push(chunk);
	});
	res.on('end', function(chunk) {
		//todo
	});
	//问题在这里
	res.on('什么'  能捕获到timeou(超时)
});
查看回复

回复 (9)

A
a316523235#911 年前

功能已经成功完成,谢谢以上各位给予的帮助

A
a316523235#811 年前

好像大家都理解错了, 我是做的一个爬虫, 要监听的是爬虫超时的事件, 是要监听req的。

M
magicdawn#711 年前
M
magicdawn#611 年前

貌似不是我想的这样

应该是

  1. req.setTimeout, 然后实际是 socket.setTimeout, see https://nodejs.org/dist/latest-v4.x/docs/api/http.html#http_request_settimeout_timeout_callback
  2. 为 socket 监听 timeout 事件 see
req.setTimeout(3000);
req.on('socket', function(socket){
  socket.on('timeout', function(){
    // timeout exceed
  });
});
M
magicdawn#511 年前

大概是这样吧~

req.on('error', function(err){
  if(err.code === 'ETIMEOUT'){
    // blabla
  }
})
A
a316523235#411 年前
引用 hustxiaoc

@hustxiaoc 3Q

H
hustxiaoc#311 年前
http.get(indexUrl, function(res) {
	var body = [];
	res.on('data', function(chunk) {
		body.push(chunk);
	});
	res.on('end', function(chunk) {
		//todo
	});
	//问题在这里
	res.on('什么'  能捕获到timeou(超时)
}).setTimeout(1000, function(){
  console.log('timeout!');
});
J
jiangliqin#211 年前

参考response.setTimeout()啊

A
a316523235#111 年前

主要就是想捕获到超时,以便做相关的处理

参与回复

登录后即可参与回复。登录