0
私が取り組んでいるnodejsアプリケーションは、明示的および ルーティングミドルウェアを使用して書かれています。私は何らかの種類のライセンス機能を に追加しています。このアプリケーションでは、定期的に期限切れをチェックします。nodejsはイベントハンドラ内からのリダイレクトを表現します
有効期限が切れた後、イベントハンドラでキャッチした承認失敗イベント を発行します。イベントハンドラ内で から新しいページをリダイレクトするか開こうとします。
- これは適切なアプローチですか? (私はノードとjsを初めて使用しています)
イベントハンドラ内のレスポンスオブジェクトにアクセスできません。 そのような場合、どのようにして別のページにリダイレクトするのですか?
//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? } });
を持っている必要があります応答をあなたにAikonをありがとうございます。これを要求と結びつけるのを避ける方法はありますか?このチェックをバックグラウンドで実行したいのですが、条件に当てはまるたびにページを開きたいのですか? – Ram
ちょっと奇妙ですが、あなたはそれをすることができます。簡単な方法は、クライアントがサーバーにajax-requestをN秒ごとに送信し、サーバーの応答を解析することです。もしライセンスがチェックされていなければ、クライアントは 'location.href = '/ badLicense''を実行します。別の方法は、websocketを使用することです:サーバーはクライアントのすべてのタイマーによってライセンスを検証し、そのライセンスは有効ではないwebsocket経由でメッセージを送信します。クライアントはそれを受け取り、 'badLicense'ページに行きます。 –
ありがとうございます。私はWebscoketsを使ってクライアントと通信する第2のアプローチを使用し、それが機能しています。どうもありがとうございました – Ram