2013-02-06 152 views
4

我有兩個選項來爲我的http請求設置超時。我不確定他們的區別。req.setTimeout&socket.setTimeout有什麼區別?

第一個是:

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); 
    }); 
} 

回答

11

socket.setTimeout設置超時的插座,例如實現HTTP Keep-Alive。

request.setTimeout確實在內部呼叫socket.setTimeout,只要套接字已被分配給請求並且已被連接。這在documentation中描述。

因此,這沒什麼區別,你可以選擇走哪條路。當然,如果你已經有了一個請求,你可以堅持請求的setTimeout函數,而不是挖掘底層套接字。