Ho cercato di creare (fondamentalmente) una funzione di fabbrica che configura e costruisce un server expressjs per una dozzina di server specializzati più piccoli che ho. Per parte di questo voglio aumentare la funzione di ascolto.Come sovraccarico la funzionalità di app.listen in expressjs
Mi piacerebbe sapere qual è il modo migliore per farlo. Sto anche cercando una scelta di design riutilizzabile qui.
Server viene creato normalmente:
var httpServer = express();
...
A causa del modo esplicito è stato progettato (non so se ho ragione) Non è possibile accedere a {} qualunque .prototype.listen. Quindi ho inventato due approcci.
Utilizzando una variabile aggiuntiva nell'ambito corrente:
var oldListen = httpServer.listen;
httpServer.listen = function(callback){
...
oldListen.call(httpServer, options.port, options.host, function(){
...
if (typeof callback == 'function') callback();
});
};
Che funziona ed è abbastanza semplice, ma poi ho una verruca sollevamento variabile. Ho anche una soluzione di chiusura, ma penso che potrebbe essere troppo ottuso per essere pratico:
httpServer.listen = (function(superListen){
return function(callback){
...
superListen.call(httpServer, options.port, options.host, function(){
...
if (typeof callback == 'function') callback();
});
};
})(httpServer.listen);
Entrambi gli esempi sono parte del contesto in fabbrica e sto volutamente riducendo gli argomenti passati alla funzione.
Qualsiasi aiuto sarebbe apprezzato.
Il middleware espresso dipende dall'ordine, quindi è probabile che una funzione di fabbrica ti morda. Puoi comporre il middleware per richiedere meno cose in ogni app https://gist.github.com/aj0strow/b0a1232d2f0df54e1a13 – AJcodez