Express.js を使用して webapp を作成しています。
私のwebappは以下を達成します
- ユーザーが 100 個の json オブジェクトを投稿
- 各 json オブジェクトはサービス呼び出しを介して処理されます
- サービス呼び出しが完了すると、セッション変数がインクリメントされます
- セッション変数の増加時に、進行状況バーを更新するためにサーバー側イベントをクライアントに送信する必要があります
サーバー送信イベントをトリガーするためにセッション変数の変更をリッスンするにはどうすればよいですか?
変数の変更を聞くことが、私が求める唯一の解決策ではありませんか?
JSON オブジェクトが処理されたら、サーバー送信イベントを送信する必要があります。
適切な提案は大歓迎です
編集 (Alberto Zaccagni のコメントに基づく)
私のコードは次のようになります。
function processRecords(cmRecords,requestObject,responseObject)
{
for (var index = 0; index < cmRecords.length; index++)
{
post_options.body = cmRecords[index];
request.post(post_options,function(err,res,body)
{
if(requestObject.session.processedcount)
requestObject.session.processedcount = requestObject.session.processedcount + 1;
else
requestObject.session.processedcount = 1;
if(err)
{
appLog.error('Error Occured %j',err);
}
else
{
appLog.debug('CMResponse: %j',body);
}
var percentage = (requestObject.session.processedcount / requestObject.session.totalCount) * 100;
responseObject.set('Content-Type','text/event-stream');
responseObject.json({'event':'progress','data':percentage});
});
};
}
最初のレコードが更新され、responseObject (高速応答オブジェクト) を使用してサーバー側イベントがトリガーされたとき
2 番目のレコードが更新されたときに、同じ responseObject を使用してサーバー側のイベントをトリガーしようとしました。既に送信された応答にヘッダーを設定できないというエラーが表示されます