req.setTimeout和socket.setTimeout之间有什么区别?

egi*_*ray 4 http settimeout node.js

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

第一个是:

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

第二个是:

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

Gol*_*den 12

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

request.setTimeout只要socket.setTimeout已将套接字分配给请求并已连接,就会在内部调用.这在文档中描述.

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