繁体   English   中英

流星上所有用户的同步倒计时

[英]Synchronous countdown across users on Meteor

我正在开发一个多人游戏(用于科学实验),参与者可以参与20轮互动决策。 每个回合有3个阶段,每个阶段最多可持续30秒。 我想知道什么是实现倒计时的好方法。

当前,我正在使用客户端方法。 在创建回合模板时,我使用客户端计时器,该计时器会在参与者到达0时提交参与者的答案。到目前为止,它工作正常(因为每个人都在同一时间开始游戏,而下一轮仅在之后每个人都提交了答案)。 考虑到参与者可能会断开连接(脱机,关闭浏览器,出现连接问题)并可能操纵会话或某些操作,因此我不确定这是否是一个好方法。

做服务器端计时器会更好吗? 例如,一个包含计时器的集合,而参与者订阅了该集合? 如果是这样,如何实现服务器端倒计时? 另外,考虑到倒计时中的每一秒(我们在模板中显示),这种方法是否会对服务器产生高要求?

永远不要信任客户。

考虑到这一点,我们需要根据服务器选择的时间,为客户端找到一种显示剩余时间的方法。首先,服务器在创建回合的结束时间(或开始时间) +持续时间)。

既然每个人都有与服务器相同的结束时间,我们需要将它们与服务器时间同步。 让我们使用mizzao:timesync非常简单,它接收服务器时间,并与客户端时间产生差异。 监视客户端时间,以确保不会发生奇怪的时钟变化,甚至不会考虑延迟。 这可能超出您的需求,但是已经完成了,因此对我们来说工作量更少!

现在我们知道了当前服务器时间以及结束时间,我们可以轻松显示剩余的时间! 如果玩家在断开连接或刷新后又回来了,那么这两个时间仍然有效,并且他们可以继续游戏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM