2012-12-13 12 views

risposta

16

Basato sul codice sorgente di nodejs (estratto qui di seguito), createServer è solo un metodo di supporto per istanziare un Server.

Estratto da line 1674 of http.js.

exports.Server = Server; 


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

Così dunque l'unica vera differenza nei due frammenti di codice che hai citato nella tua domanda iniziale, è che non si sta usando la parola chiave new.


Per chiarezza il costruttore Server è la seguente (in fase di post - 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

Grazie, ho pensato tanto. Nell'interesse della leggibilità, potresti aggiungere il costruttore 'Server' al tuo esempio di codice? – wulfgarpro

+0

@ wulfgar.pro Nessun problema, aggiunto ora – isNaN1247

3

Secondo the docs, sembra essere

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