gpt4 book ai didi

javascript - Meteor 上跨用户同步倒计时

转载 作者:行者123 更新时间:2023-12-01 03:09:18 26 4
gpt4 key购买 nike

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

目前,我正在使用客户端方法。在创建回合模板时,我使用客户端计时器,当它达到 0 时提交参与者的答案。到目前为止,这工作正常(因为每个人都在完全相同的时间开始游戏,并且下一轮仅在之后开始)每个人都已提交答案)。考虑到参与者可能会断开连接(离线、关闭浏览器、出现连接问题)并且可能会操纵 session 或其他内容,我不确定这是一个好方法。

做服务器端计时器会是更好的方法吗?例如,包含计时器的集合,以及参与者订阅该集合?如果是这样,如何实现服务器端倒计时?另外,考虑到倒计时的每一秒(我们在模板中显示)都需要监听服务器上的数据,这种方法是否会对服务器造成高要求?

最佳答案

永远不要相信客户。

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

现在每个人都有相同的结束时间(根据服务器),我们需要将它们与服务器时间同步。让我们使用mizzao:timesync它非常简单,它接收服务器时间,并与客户端时间产生差异。监视客户端时间以确保不会发生奇怪的时钟变化,甚至考虑延迟。这可能比您需要的多一点,但它已经完成了,所以我们的工作量减少了!

现在我们知道了当前服务器时间和回合结束时间,我们可以轻松显示还剩多长时间!如果玩家在断开连接或刷新后回来,这两个时间仍然有效,他们将能够继续游戏。

关于javascript - Meteor 上跨用户同步倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com