我正在使用Rails创建MUD。这是我到目前为止所得到的:
现在我正在研究战斗系统。我的战斗系统会像这样工作:
为了实现这个战斗系统,我决定使用多线程和计时器:
def initiate_attack
Thread.new do
sleep(5)
hit_target
ActiveRecord::Base.connection.close
end
end
def non_player_character_failed_to_deflect
(1 + rand(10)) < 5
end
def is_non_player_character?
@attack.target_type == "NonPlayerCharacter"
end
def hit_target
if is_non_player_character?
if non_player_character_failed_to_deflect
damage_target
else
puts "Deflected"
end
else
"hit player"
end
end
def damage_target
@target.update(power_level: @target.power_level - 10)
end
就纯功能而言,这是有效的,但问题是我无法弄清楚如何将字符串返回到视图以便用户可以看到它们。用户应该在发起攻击的任何人以及攻击完成后看到消息。我认为这样做的主要问题是,使用多线程MVC会被破坏,因为模型中的线程在控件返回控制器并查看后仍然在运行。
总结一下我的问题: 1)如何使用AJAX来持续更新我的视图以及来自模型的数据?
有关更多信息,请访问该项目的github页面:
答案 0 :(得分:1)
您需要一种将数据推送到浏览器的方法。要做到这一点,你有几个选择:
我会尝试一下message_bus gem。
编辑:您也可以尝试(Sidekiq)[http://sidekiq.org/]来运行异步代码 - 我相信您会发现使用它的代码从长远来看更容易维护,特别是与使用方法相比线程直接。