1

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

我希望 Alan 的页面定期轮询 Rails 服务器以查找自上次重新加载以来是否有任何更改,如果没有则重新加载页面(通过整页 GET 或 AJAX 调用)。为了更好地使用缓存和代理,我想通过发出一个定期的 HTTP HEAD 请求来做到这一点,让 Rails 计算出最后一次更改的时间戳(可以从我的数据库中轻松获得)并在 Last -修改标题;然后让客户端对该时间戳采取行动。

我该怎么做呢?

4

2 回答 2

1

你想要的很多东西都内置在 Rails 中。

查看Rails 缓存指南中的条件获取。

如果你设置正确,这一切都发生在浏览器和服务器之间。

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

于 2010-04-14T10:37:58.800 回答
0

我没有(或想要)一种机制来推动对艾伦观点的改变。

你为什么不想要其他玩家视图的实时更新?

您可以通过像ajaxmessaging那样的长轮询AJAX 请求来实现这一点(做了吗?),或者如果 Flash 是您选择的武器,那么Juggernaut可能是一个选择。nginx_http_push_module看起来也很有前途。公平地说,整个交易有点混乱,所以让我们希望能够以惊人的速度快速转向 HTML5 及其WebSockets

于 2010-04-14T10:48:14.830 回答