Die NodeJS Anwendung arbeite ich an geschrieben mit Express- und Middleware-Routing. Ich füge eine Art Lizenz Funktionalität diese Anwendung, wo sie in regelmäßigen Abständen überprüft nach Ablauf überprüft.NodeJS express Umleitung aus einem Event-Handler
Nachdem festgestellt wird, dass es abgelaufen ist, gibt es ein Autorisierungsfehler-Ereignis aus, das im Ereignishandler abgefangen wurde. Ich möchte umleiten oder eine neue Seite von innerhalb der Event-Handler zu öffnen.
- Ist dies der richtige Ansatz? (Ich bin neu zu Knoten und js)
Ich habe keinen Zugriff auf Response-Objekt in den Event-Handler. So in einem solchen Fall, wie ich auf eine andere Seite umleiten?
//Start of the code var app = express(); //view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); //Deleted the code to keep it minimal app.use('/', routes); app.use('/sensor', sensorPage); app.use('/export', exportPage); app.use('/exportsensormetrics', exportSensorMetricsPage); //Error Handling app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); //The product key authorise() function periodically checks for expiry var authutils = require('./authutils.js'); authutils.authorise(); //This is the Event Handler authutils.authEvent.on('authorisation', function(data) { if(data == 'passed') { utils.dump("authutils::authEvent::on: Authorisation Passed"); } else if(data == 'failed') { //Auth failed //I want to redirect from here and open page which says expired //Can I redirect from here? } });
Danke Aikon für die Antwort. Kann ich es vermeiden, das mit Anfragen zu verknüpfen? Ich mag diese Prüfung im Hintergrund laufen zu lassen und, wenn es die Bedingung trifft, möchte ich eine Seite öffnen? – Ram
Es ist ein bisschen seltsam, aber Sie können es tun. Ein einfacher Weg ist: client sendet eine ajax-Anfrage an den Server jede N Sekunde und analysiert die Serverantwort. Wenn Lizenz überprüfen ist nicht dann tun Client 'location.href =‚/ badLicense''. Eine weitere Möglichkeit ist die Verwendung websocket: Server Validate Lizenz durch den Timer alle Kunden und senden Nachricht über websocket diese Lizenz nicht gültig ist. Der Kunde erhält es und geht auf die Seite 'badLicense'. –
Danke Aikon. Ich habe den zweiten Ansatz verwendet, Webscokets zu verwenden, um mit den Clients zu kommunizieren, und es funktioniert. Vielen Dank – Ram