我正在使用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触发服务器端事件。我得到一个错误说不能设置标头已经被发送的响应
为什么你要听的变量?为什么不在更新它时发送正确的事件? –