5

我有两个选项可以为我的 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);
  });
}
4

1 回答 1

13

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

request.setTimeoutsocket.setTimeout一旦套接字被分配给请求并已连接,就会在内部调用。这在文档中有所描述。

因此,没有区别,您可以选择走哪条路。当然,如果您手中已经有一个请求,您会坚持使用请求的setTimeout功能,而不是挖掘底层套接字。

于 2013-02-06T11:21:37.877 回答