req.setTimeout&的区别是什么? socket.setTimeout?

时间:2013-02-06 10:46:53

标签: node.js http settimeout

我有两个选项可以为我的http请求设置超时。我不确定他们的区别。

首先是:

req.setTimeout(2000,function () {
  req.abort();
  console.log("timeout");
  self.emit('pass',message);
});

第二个是:

req.on('socket', function (socket) {
  socket.setTimeout(2000);  
  socket.on('timeout', function() {
      req.abort();
      self.emit('pass',message);
  });
}

1 个答案:

答案 0 :(得分:11)

socket.setTimeout设置套接字的超时,例如实现HTTP Keep-Alive。

只要已将套接字分配给请求并已连接,

request.setTimeout就会在内部调用socket.setTimeout。这在documentation

中有所描述

因此,没有区别,你可以选择走哪条路。当然,如果您已经有了请求,那么您将坚持使用请求的setTimeout函数,而不是挖掘底层套接字。