2012-12-13 10 views

答えて

16

と思われます。

line 1674 of http.jsからの抽出物。

exports.Server = Server; 


exports.createServer = function(requestListener) { 
    return new Server(requestListener); 
}; 

あなたの元の質問に言及した2つのコードスニペットではそのためだけ違いは、あなたがnewキーワードを使用していないということです。


は、明確にするためにServerコンストラクタは、(ポストの時 - 2012年12月13日)、次のとおりです。

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); 
+0

おかげで、私は同じくらいと思いました。読みやすくするために、コード例に 'Server'コンストラクタを追加できますか? – wulfgarpro

+0

@ wulfgar.pro問題はありません、今すぐ追加 – isNaN1247

3

the docsによれば、createServerServerをインスタンス化するだけヘルパーメソッドである、(以下抽出物)nodejsのソースコードに基づいて

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