Meteor:发布和订阅是客户端和服务器端之间传递值的唯一方法吗?

时间:2013-03-23 02:14:26

标签: meteor

基本上,我需要在用户登录时启动后台进程。后台进程返回一些敏感数据,服务器端应进一步处理它,然后将其提供给客户端。

这是Meteor.Publish和Subscribe方法发挥作用的地方吗?或者我需要使用Meteor.methods吗?还有其他方法吗?

1 个答案:

答案 0 :(得分:3)

对于这种事情,您可能希望使用调用而不是发布。这是因为发布功能的用例更多的是决定用户应该看到什么&不是真的要处理数据(即做网络刮擦或其他东西并收集这些)&该进程可能阻塞,因此所有客户端都可能等待此任务完成。

我建议您通过

迁移到陨石:https://github.com/oortcloud/meteorite
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.
    }
});