流星观察到永远的奔跑

时间:2012-10-15 19:10:07

标签: meteor

根据observe docs,我必须定义并调用 stop 函数,否则我的观察者将永远运行。关键是,如果用户决定在预期时间之前关闭浏览器,那么如何调用 stop ?如果连接已经死了,我如何调用 stop

2 个答案:

答案 0 :(得分:3)

为此,您可以在发布内部调用它:

this.session.socket.on("close", function() { /*do your thing*/});

所以,如果你想阻止观察者......

Meteor.publish("something", function () {

  // ...
  // your observers code here
  // ...

  self.onStop(function () {
    handle.stop();
  });
  this.session.socket.on("close", function() {
    handle.stop();
  });
});

回答here。谢谢周华兵。

答案 1 :(得分:3)

您实际上不需要担心断开连接。只要订阅停止(客户端断开连接,或调用unsub,或者您调用this.stop),服务器将在拆除活动订阅之前运行所有已注册的onStop处理程序。 (顺便说一下,断开时不会立即发生拆解,但最终会发生故障。想法是稍等一下,以防客户端尝试重新连接并恢复其会话。)

需要做的是确保注册一个onStop处理程序,清除代码使用的所有资源。同样,这需要在订阅停止时发生。 onStop是正确的钩子。在活动观察上调用stop非常重要,例如,就像示例中的第一个代码节一样。