Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js';http.Server和http.createServer,什么';有什么区别?_Javascript_Node.js - Fatal编程技术网

Javascript Node.js';http.Server和http.createServer,什么';有什么区别?

Javascript Node.js';http.Server和http.createServer,什么';有什么区别?,javascript,node.js,Javascript,Node.js,以下两者之间的区别是什么: 服务器(函数(req,res){}) 及 createServer(函数(req,res){}) 据报道,似乎是这样 http.createServer = function (requestListener) { var ser = new http.Server(); ser.addListener(requestListener); return ser; }; 基于nodejs的源代码(摘录如下),createServer只是实

以下两者之间的区别是什么:

服务器(函数(req,res){})

createServer(函数(req,res){})

据报道,似乎是这样

http.createServer = function (requestListener) {
     var ser = new http.Server();
     ser.addListener(requestListener);
     return ser;
};

基于nodejs的源代码(摘录如下),
createServer
只是实例化
服务器的一个助手方法

从……中提取

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


为清楚起见,
服务器
构造如下(2012年12月13日之后):


谢谢,我也这么想。为了便于阅读,您能否将
Server
构造函数添加到您的代码示例中?@wulfgar.pro没问题,现在添加,这意味着,使用
createServer
,我们可以创建多个服务器。您能指出这一点吗?你的链接就是整个页面,任何指向你所指段落的链接?@DmitriZaitsev更新。我指的是“返回
http.Server的新实例。
请求侦听器
是一个自动添加到
'request'
事件中的函数。”(或者多年前的任何文本-看起来
addListener
不再存在)谢谢,实际上,它指向了更简单的源代码:@DmitriZaitsev我很确定它在2012年不是那么简单,
Server
changedOh的签名,还没有意识到你的答案有那么旧。但是,由于它链接到当前的Node.js版本,是否可以更新代码以反映它?
exports.Server = Server;


exports.createServer = function(requestListener) {
  return new Server(requestListener);
};
function Server(requestListener) {
  if (!(this instanceof Server)) return new Server(requestListener);
  net.Server.call(this, { allowHalfOpen: true });

  if (requestListener) {
    this.addListener('request', requestListener);
  }

  // Similar option to this. Too lazy to write my own docs.
  // http://www.squid-cache.org/Doc/config/half_closed_clients/
  // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F
  this.httpAllowHalfOpen = false;

  this.addListener('connection', connectionListener);

  this.addListener('clientError', function(err, conn) {
    conn.destroy(err);
  });
}
util.inherits(Server, net.Server);