2012-12-13 2 views

Antwort

16

Basierend auf den Quellcode NodeJS zu sein (Auszug unten), createServer nur eine Hilfsmethode ist eine Server zu instanziiert.

Auszug aus line 1674 of http.js.

exports.Server = Server; 


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

So also der einzige wahre Unterschied in dem beide Code-Snippets Sie in Ihrer ursprünglichen Frage erwähnt haben, ist, dass Sie nicht das new Schlüsselwort.


Aus Gründen der Klarheit der Server Konstruktor ist als (zum Zeitpunkt der Post - 2012.12.13) folgt:

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

Danke, ich so viel gedacht. Im Interesse der Lesbarkeit könnten Sie den 'Server'-Konstruktor zu Ihrem Codebeispiel hinzufügen? – wulfgarpro

+0

@ wulfgar.pro Kein Problem, jetzt hinzugefügt – isNaN1247

3

Nach the docs, so scheint es

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