我正在使用 Rails 创建一个在线多人棋盘游戏,我希望无需手动刷新页面即可玩游戏。我打算使用 websockets 或服务器发送事件来更新页面。我还没有决定哪个,但我不希望它会对我的问题产生影响。
我感到困惑的是知道何时向客户端发送更新。例如,假设我正在下国际象棋,玩家 1 转了一圈。他们会将他们的移动发送到服务器,然后服务器会将其保存到数据库中。player2 的 websocket 或 SSE 如何知道将有关 player1 移动的信息推送到 player2 的浏览器?
我知道他们可以定期查询数据库以查看游戏是否已更新,但这似乎很难扩展,因为每个用户都会经常查询数据库。
有没有一种简单的方法可以等待数据库更新并以某种方式自动收到通知?还是有其他解决方案?
我已经在网上寻找了很多解决方案,但还没有真正得到任何具体的想法。只要它是免费的,我绝对愿意使用图书馆或其他任何东西来解决问题。我见过一些付费解决方案,但这些都不是一种选择。
我还看到有人建议以某种方式使用 node.js 和 rails 来实时做一些事情。我对 node.js 了解不多,但我听说它对这样的异步功能很有用。如果它比任何 Rails 解决方案都好,我有兴趣学习如何使用它。
我正在使用 Rails 3.2,但如果 Rails 4 有一些在这里可以很好地工作,我可能也会对此感兴趣。