更新后的状态更改(由另一个用户)但在轮询之前

时间:2011-07-21 15:34:06

标签: ajax web-applications polling

假设我们有以下情况:

  1. 2个用户都发出信号准备播放,rails应用程序接收并开始游戏
  2. 2个用户中的一个立即通过ajax发出“forfeit”(我假设不可能阻止它,amirite?)
  3. 当其他用户轮询以确定游戏是否已经开始时,游戏已经结束并且分数已更新
  4. 该用户感到困惑
  5. 我不太清楚在这做什么。谁能给我一些想法?


    好吧,我弄清楚我做错了什么。 (因为我的代表太低了,因此无法自我回答)

    当用户轮询以确定他/她的游戏是否已经开始,以及接收移动等时,我会检查“正在进行游戏”和“用户=用户轮询”属性以确定要响应的内容。但这是错误的,因为一旦结束,这个逻辑就无法找到相关游戏来检索数据并回馈给用户。

    我现在想到的是,添加“结束游戏已被轮询”作为游戏对象的属性(好吧,通过关系玩对象)所以如果游戏结束但尚未被轮询,则用户将收到它然后回复确认。然后游戏将不再被轮询。

2 个答案:

答案 0 :(得分:0)

指示游戏已结束的标志应允许指示游戏结束的原因的不同值。当玩家1丧失时,标志被更新以指示没收。然后,当玩家2轮询获得状态时,他被告知没收。

答案 1 :(得分:0)

好吧,我弄清楚我做错了什么。

当用户轮询以确定他/她的游戏是否已经开始,以及接收移动等时,我会检查“正在进行游戏”和“用户=用户轮询”属性以确定要响应的内容。但这是错误的,因为一旦结束,这个逻辑就无法找到相关游戏来检索数据并回馈给用户。

我现在想到的是,添加“结束游戏已被轮询”作为游戏对象的属性(好吧,通过关系玩对象)所以如果游戏结束但尚未被轮询,则用户将收到它然后回复确认。然后游戏将不再被轮询。

然而,现在有一个新问题,就像在民意调查之间有多个状态变化一样。

也许民意调查是错的?也许我需要一个记录状态变化的缓冲队列来进行轮询?我还不知道。