根据观察文档,我必须定义并调用停止函数,否则我的观察者将永远运行。关键是,例如,如果用户决定在预期时间之前关闭他的浏览器,如何调用停止?如果连接已死,我如何调用停止?
问问题
1200 次
2 回答
3
您实际上不需要担心断开连接。任何时候订阅停止(无论是客户端断开连接、调用 unsub 还是您调用this.stop
),服务器都会onStop
在拆除活动订阅之前运行所有已注册的处理程序。(顺便说一句,断开连接时不会立即发生拆卸,但最终会发生。想法是稍等一下,以防客户端尝试重新连接并恢复其会话。)
您需要做的是确保注册一个onStop
处理程序来清理您的代码使用的任何资源。同样,这需要在订阅停止时发生。 onStop
是正确的钩子。stop
例如,就像在示例中的第一个代码节中一样,调用主动观察非常重要。
于 2013-02-27T23:02:55.573 回答
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();
});
});
答案在这里找到。感谢周华兵。
于 2012-10-16T17:27:32.460 回答