基本上,我需要在用户登录时启动后台进程。后台进程返回一些敏感数据,服务器端应进一步处理它,然后将其提供给客户端。
这是Meteor.Publish和Subscribe方法发挥作用的地方吗?或者我需要使用Meteor.methods吗?还有其他方法吗?
答案 0 :(得分:3)
对于这种事情,您可能希望使用调用而不是发布。这是因为发布功能的用例更多的是决定用户应该看到什么&不是真的要处理数据(即做网络刮擦或其他东西并收集这些)&该进程可能阻塞,因此所有客户端都可能等待此任务完成。
我建议您通过
迁移到陨石:https://github.com/oortcloud/meteoritenpm install -g meteorite
您现在可以在http://atmosphere.meteor.com访问精彩的社区套餐。
Ted Blackman的event-horizon软件包允许您在用户登录客户端时创建事件。
然后,您可以为此创建一个事件:
客户Js
EventHorizon.fireWhenTrue('loggedIn',function(){
return Meteor.userId() !== null;
});
EventHorizon.on('loggedIn',function(){
Meteor.call("userloggedin", function(err,result) {
console.log("Ready")
if(result) {
//do stuff that you wanted after the task is complete
}
}
});
服务器js
Meteor.methods({
'userloggedin' : function() {
this.unblock(); //unblocks the thread for long tasks
//Do your stuff to Meteor.user();
return true; //Tell the client the task is done.
}
});