gpt4 book ai didi

ruby-on-rails - 定期更新所有用户的游戏状态

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:25 25 4
gpt4 key购买 nike

我正在用 ruby​​ 编写扑克室游戏。我想设定一个时间限制,每个玩家必须在多长时间内决定他们的玩法,在哪个时间段结束时游戏将决定接下来会发生什么。 (这个特定的玩家超时了吗?每个人都弃牌了吗?游戏结束了吗?等等)

我想用 JS 从用户端轮询服务器上发生的事情,但是我如何让服务器运行后台任务,每 N 分钟推进一次游戏状态? (每个扑克室的值(value)可能不同)

最佳答案

这是一个很难解决的问题。这可能是解决它的最简单方法之一。使用后台调度。例如 sidekiq .

您可以安排一个作业来更新游戏状态,例如:

class GameTimoutTrigger
include Sidekiq::Worker

def perform(game_id)
game = Game.find(game_id)
game.timeout!
end
end

当游戏回合开始时,您安排超时触发器

round_timeout = game.round_interval
GameTimoutTrigger.perform_in(round_timeout, game.id)

请注意,sidekiq 将按时间间隔(默认为 15 秒)轮询计划中的作业。所以超时总会有一些延迟。

例如,如果回合时间必须始终恰好为 60 秒,您可以保存回合开始和结束时间戳以及用户的操作时间戳。并且只接受在圆形范围内的用户操作。但这可能没有必要。这只是一个提示。

关于ruby-on-rails - 定期更新所有用户的游戏状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106689/

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