2014-02-18 33 views
1

考虑下面的代码...检查流中包含的数据

http.createServer(function(req, res){ 

    // Emit an event where res MIGHT be modified 
    // res may have its write() method called 
    // it also may have its end() method called 
    self.emit('somethingHappened', res); 

    // How do I know if res has been ended? 
    if(res.hasEnded){ 
     // Response was written and sent, nothing to do 
     return; 
    } 

    // How do I know if res data has been set? 
    if(!res.hasData){ 
     // Write some data 
    } 

    res.end(); 
}); 
  • 我如何检查是否res已经结束?
  • 如何检查res是否包含任何数据?

回答

0

您可以看到res已在res.finished中结束。如果我们想知道是否发送了一些数据,我个人使用res.socket._bytesDispatched作为这些信息。你可以看到它是如何工作在这里:

http.createServer(function(req, res){ 

     console.log('Have we sent data?',res.socket._bytesDispatched>0); 
     res.write('HELLO'); 
     console.log('Have we sent data?',res.socket._bytesDispatched>0); 

     console.log('Have we finished?',res.finished); 
     res.end(); 
     console.log('Have we finished?',res.finished); 

    }).listen(3000); 
+0

感谢您的回答,它的工作。我对使用'_bytesDispatched'有点紧张,因为它没有记录,可能会在没有通知的情况下被移除,虽然现在没问题。 – Drahcir