我正在编写一个Meteor应用程序,它从机器中获取外部数据(想想物联网)并显示大量图表,图表等。到目前为止一切顺利。应用程序中有各种页面(到目前为止每种图形类型一个)。现在,当数据“实时”馈送时,存在(正常)数据“设置”完全重置的情况。即所有数据都不再有效。发生这种情况时,我想将用户重定向回“主页”页面,无论它们在哪里(嗯,主页除外)。
我希望将此作为“全球”项目,但也不要太多开销。我注意到铁:路由器(我正在使用)有一个onData()方法,但这似乎有点高开销 - 因为它只是一个数据表明重置。
由于每个页面都相当“独立”,并且用户可以长时间停留在页面上(随着基础数据的变化,图表会自动更新),我甚至不确定:路由器是最好的方法所有
这是Meteor 1.0.X BTW。
只是寻找一个干净的“适当的”流星方式来处理这个问题。我可以检查每个页面的重新显示逻辑,但是会认为更抽象的(读取:全局)方法会更长期友好(因此,如果我们添加更多页面的图表,它会自动生效)..
谢谢!
答案 0 :(得分:3)
这是cursor.observeChanges
http://docs.meteor.com/#/full/observe_changes的工作
设置一个服务器作为"重置通知"在插入新通知时广播给所有用户。
在客户端:
criteria = {someCriteria: true};
query = ResetNotificationCollection.find(criteria)
var handle = query.observeChanges({
added: function (id, user) {
Router.go('home');
}
});
每当发生重置时:
notification = { time: new Date(), whateverYouWantHere: 'useful info' }
ResetNotificationCollection.insert notification
在插入时,观察集合上的更改的所有客户端都将响应有效的小DDP消息。