Qual è la differenza tra:Node.js 'http.Server e http.createServer, qual è la differenza?
http.Server (function (req, res) {});
e
http.createServer (funzionali (req, ris) {});
Qual è la differenza tra:Node.js 'http.Server e http.createServer, qual è la differenza?
http.Server (function (req, res) {});
e
http.createServer (funzionali (req, ris) {});
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);
Secondo the docs, sembra essere
http.createServer = function (requestListener) {
var ser = new http.Server();
ser.addListener(requestListener);
return ser;
};
Grazie, ho pensato tanto. Nell'interesse della leggibilità, potresti aggiungere il costruttore 'Server' al tuo esempio di codice? – wulfgarpro
@ wulfgar.pro Nessun problema, aggiunto ora – isNaN1247