我正在使用 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(快速响应对象)触发服务器端事件时
当第二条记录更新时,我尝试使用相同的 responseObject 触发服务器端事件。我收到一条错误消息,提示无法将标头设置为已发送的响应