javascript – Node.js的http.Server和http.createServer有什么区别?

前端之家收集整理的这篇文章主要介绍了javascript – Node.js的http.Server和http.createServer有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有什么区别:

http.Server(function(req,res) {});

http.createServer(function(req,res) {});

解决方法

根据nodejs的源代码(下面的解析),createServer只是一个帮助程序来实例化一个服务器.

摘自line 1674 of http.js.

  1. exports.Server = Server;
  2.  
  3.  
  4. exports.createServer = function(requestListener) {
  5. return new Server(requestListener);
  6. };

因此,您在原始问题中提到的两个代码段中唯一真正的区别是,您没有使用新的关键字.

为了清楚起见,Server构造函数如下(在2012-12-13之后):

  1. function Server(requestListener) {
  2. if (!(this instanceof Server)) return new Server(requestListener);
  3. net.Server.call(this,{ allowHalfOpen: true });
  4.  
  5. if (requestListener) {
  6. this.addListener('request',requestListener);
  7. }
  8.  
  9. // Similar option to this. Too lazy to write my own docs.
  10. // http://www.squid-cache.org/Doc/config/half_closed_clients/
  11. // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F
  12. this.httpAllowHalfOpen = false;
  13.  
  14. this.addListener('connection',connectionListener);
  15.  
  16. this.addListener('clientError',function(err,conn) {
  17. conn.destroy(err);
  18. });
  19. }
  20. util.inherits(Server,net.Server);

猜你在找的JavaScript相关文章