2012-12-13 11 views

Odpowiedz

16

podstawie kodu źródłowego nodejs (wyciąg poniżej), createServer jest tylko metoda pomocnika do instancji Server.

Wyciąg z line 1674 of http.js.

exports.Server = Server; 


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

Tak więc jedynym prawda różnica w tych dwóch fragmentów kodu już wspomniane w pierwotnym pytaniu, jest to, że nie używasz słowa kluczowego new.


Dla jasności konstruktor Server przedstawia się następująco (w czasie postu - 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

Dzięki, myślałem tyle. Czy w interesie czytelności można dodać konstruktor 'Server' do przykładu kodu? – wulfgarpro

+0

@ wulfgar.pro Nie ma problemu, dodano teraz – isNaN1247

3

Według the docs, wydaje się być

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