È possibile scrivere un middleware che viene eseguito dopo che la risposta è stata inviata a un client o dopo che la richiesta è stata elaborata e chiamata appena prima di inviare la risposta al client?middleware express/connect che viene eseguito dopo che la risposta è stata inviata al client
8
A
risposta
13
pauljz ha dato il metodo di base, ma per espandere su questo qui è un esempio di middleware
module.exports = function() {
return function(req, res, next) {
req.on("end", function() {
// some code to be executed after another middleware
// does some stuff
});
next(); // move onto next middleware
}
}
Nella vostra applicazione principale
expressApp.use(require("./doneMiddleware"));
expressApp.use(express.logger());
expressApp.use(express.static.....
3
Vedere se il collegamento a req.on('end', function() {...});
funzionerà per voi.
+0
Se ho capito bene, questo evento si innescherà quando il client completa invio di richieste/dati al server. Ma quello che voglio è, dopo aver chiamato response.render o response.redirect etc, il middle ware dovrebbe essere eseguito. –
Se ho capito bene, questo evento si innescherà quando il client completa l'invio di richiesta/dati al server. Ma quello che voglio è, dopo aver chiamato response.render o response.redirect etc, il middle ware dovrebbe essere eseguito. –
No, questo evento viene emesso una volta completata l'intera richiesta, inclusa l'invio della risposta. Finché il rendering/reindirizzamento della risposta di chiamata. La richiesta associata emetterà fine. –
@SelvarajMA Il seguente approccio potrebbe essere migliore: http://stackoverflow.com/a/21858212/673014. – pronskiy