我正在使用express.js編寫web應用程序。一旦服務呼叫完成Node.js偵聽會話變量更改並觸發服務器發送的事件
我的web應用程序實現以下
- 用戶訊息100 JSON對象
- 每個JSON目的通過一種服務呼叫
- 處理,會話變量被遞增
- 在增加會話變量時,必須向客戶端發送服務器端事件以更新進度條
如何實現監聽會話變量更改以觸發服務器發送的事件?
傾聽變量變化不是我尋求的唯一解決方案嗎?
我需要在處理JSON對象後實現發送服務器發送的事件。
任何適當的建議是歡迎
編輯(基於阿爾貝託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觸發服務器端事件。我得到一個錯誤說不能設置標頭已經被髮送的響應
爲什麼你要聽的變量?爲什麼不在更新它時發送正確的事件? –