代码之家  ›  专栏  ›  技术社区  ›  Chowlett

Rails:定期使用Head检查页面更改

  •  1
  • Chowlett  · 技术社区  · 16 年前

    我有一个Rails应用程序实现了一个游戏,所以预计玩家会在游戏页面打开一个浏览器。当玩家Alan自己采取行动时,我使用Ajax请求更新Alan正在查看的游戏页面,以反映新的状态。然而,当另一个玩家(Bob)采取行动时,我没有(或不想)一种机制来推动艾伦的观点发生变化。

    我希望Alan的页面定期轮询Rails服务器,以确定自上次重新加载之后是否有任何更改,如果没有,则重新加载页面(通过整页get或Ajax调用)。为了更好地处理缓存和代理,我希望通过发出一个定期的HTTP头请求来实现这一点,让Rails计算出最后一次更改的时间戳(从我的数据库中很普通的可用),并在最后一次修改的头中用它来响应;然后让客户端对该时间戳执行操作。

    我该怎么做呢?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Toby Hede    16 年前

    很多你想要的是内置在Rails中。

    看一看 Conditional GETS 在Rails缓存指南中。

    如果设置正确,所有这些都将在浏览器和服务器之间发生。

    如果您非常热衷,可以在Rails堆栈前面放置一个反向代理,并拥有一个额外的缓存层。

        2
  •  0
  •   Community Mohan Dere    9 年前

    我没有(或不想)一种机制来推动艾伦的观点发生变化。

    你为什么不想 realtime updates 其他玩家的看法?

    你可以用 long polling Ajax请求 ajaxmessaging (是吗?)或者如果闪光是你的武器,那么 Juggernaut 可能是一种选择。这个 nginx_http_push_module 看起来也很有希望。公平地说,整个交易有点混乱,所以让我们期待着一个令人惊讶的快速移动到HTML5及其 WebSockets .