2014-01-11 35 views
0

由於我依靠net module構建我自己的http module,我想爲每個新套接字設置超時時間。 我建立了以下內容:設置每個新套接字的超時時間.js

server = net.createServer(function (socket) { 
      if(server.timeout==null){ 
       server.timeout=120000; 
       if(server.timeoutCallBack==null){ 
        server.timeoutCallBack=function(){socket.destroy();}; 
       } 
      } 
      socket.setTimeout(server.timeout,server.timeoutCallBack()); 

所以如果我的服務器的用戶,設置新的超時時間,它會使用它。如果不是,則默認值爲2分鐘。

我的問題是,我的服務器不提供第一個連接,只是第二個。我的意思是,它獲得第一個HTTP消息時,它不會調用我:

  socket.on("data", function (data) { 
      }); 

回答

4

你傳遞給socket.setTimeout作爲回調的東西是結果server.timeoutCallBack(),這是undefined。在該行後2分鐘呼叫timeoutCallBack,而不是在該行呼叫該電話號碼,並且沒有任何內容呼叫setTimeout

你應該傳遞一個參考的功能setTimeout來代替:

socket.setTimeout(server.timeout,server.timeoutCallBack); 
+0

感謝它解決問題 –