2015-04-01 131 views
0

我在玩一個基本的Node.js服務器(沒有框架)。我希望服務器在特定條件下終止請求。這樣做的正確方法是什麼?我試過request.connection.destroy(),req.removeListener('data')req.removeListener('end'),但服務器繼續運行並返回結果。這裏是我的一部分:什麼是終止Node.js服務器請求的正確方法?

http.createServer(function(req,res){ 
    req.on('data',function(data){ 
     content+=data; 
     if(condition){ 
      req.connection.destroy(); 
      req.removeListener('data'); 
      req.removeListener('end'); 
     } 
    }); 

    req.on('end',function(){= 
     res.writeHead(200,{ 
      'Context-Type':'text/plain', 
     }); 
     res.write(content); 
     res.end(); 
    }); 
}); 

P.S. req.once('end',...)而不是req.on('end',...)是不是更好?其他人似乎都使用on(),這是有原因嗎?

編輯: 我改變了if體:

   req.abort(); 
       req.connection.destroy(); 
       req.removeAllListeners('data'); 
       req.removeAllListeners('end'); 

然而,end事件仍被稱爲(即content仍在被寫入)。

+0

不'removeListener'採取監聽器本身作爲參數? – Bergi 2015-04-01 23:37:47

回答

0

您必須返回任何結果。這只是正確的方法。您的客戶端向服務器發送請求,因此需要回答。它可以是狀態400,但它必須是。另一種方式,您的客戶永遠不會意識到該請求已被終止並放慢您的應用程序。

+0

我在部分代碼未顯示時返回'400' :) – 2015-04-02 00:12:11

相關問題