基本上,当用户登录时,我需要启动一个后台进程。后台进程返回一些敏感数据,服务器端应该进一步处理它,然后使其可供客户端使用。
这是 Meteor.Publish 和 Subscribe 方法发挥作用的地方吗?还是我需要使用Meteor.methods?还有其他方法吗?
基本上,当用户登录时,我需要启动一个后台进程。后台进程返回一些敏感数据,服务器端应该进一步处理它,然后使其可供客户端使用。
这是 Meteor.Publish 和 Subscribe 方法发挥作用的地方吗?还是我需要使用Meteor.methods?还有其他方法吗?
对于这种事情,您可能希望使用调用而不是发布。这是因为发布功能的用例更多的是决定用户应该看到什么而不是真正处理数据(即进行网络抓取或其他事情并收集这些数据)并且该过程可能会阻塞,因此所有客户端都可能等待这个任务要完成。
我建议你迁移到陨石:https ://github.com/oortcloud/meteorite via
npm 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.
}
});