我刚刚开始使用Meteor,我有一个REST API与发布/订阅相连,可以定期更新每个客户端。如何在全局范围内运行此行为,只有在连接客户端时才刷新?
我的第一个用例是在客户端处于活动状态时定期刷新内容。我的第二个用例是使用某种全局锁定来确保任务一次只发生一次。我正在尝试使用Meteor来创建部署UI,我只希望一次部署一次。
答案 0 :(得分:1)
发布/订阅仅在客户端连接时自动运行。但是,不要在发布或订阅功能中放置任何您想要控制执行时间的功能。它们可能会运行任意次数。
如果您希望任何客户端在服务器端使用Meteor.methodss
执行某些命令,并使用Meteor.call
从客户端模板事件中明确调用它。
要确保在任何给定时间只发生一次部署,最简单的方法是创建另一个集合,例如CurrentDeployments
。并且只要执行Meteor.methods
中的部署脚本函数,如果有正在进行的部署,请检查CurrentDeployments.findOne,如果没有正在运行,则仅调用new。
作为副作用,请在客户端订阅CurrentDeployments
,以便在已经运行的情况下禁用“部署”按钮。