req.setTimeout和socket.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); }); } 

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

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

因此,这没什么区别,你可以select走哪条路。 当然,如果你已经有了一个请求,你可以坚持请求的setTimeout函数,而不是挖掘底层套接字。