Rails を使用してオンラインのマルチプレイヤー ボード ゲームを作成しています。ページを手動で更新しなくてもゲームをプレイできるようにしたいと考えています。Websockets または Server Sent Events を使用してページを更新する予定です。どちらかはまだ決めていませんが、私の質問に違いがあるとは思いません。
私が混乱しているのは、いつクライアントに更新を送信するかを知ることです。たとえば、私がチェスをしていて、player1 が手番を行ったとします。彼らは移動をサーバーに送信し、サーバーはそれをデータベースに保存します。player2 の websocket または SSE は、player1 の移動に関する情報を player2 のブラウザにプッシュすることをどのように認識しますか?
データベースに定期的にクエリを実行して、ゲームが更新されたかどうかを確認できることはわかっていますが、すべてのユーザーが頻繁にデータベースにクエリを実行するため、スケーリングが難しいようです。
データベースの更新を待って、何らかの形で自動的に通知される簡単な方法はありますか? または、他の解決策はありますか?
これに対する解決策をオンラインでたくさん調べましたが、実際には具体的なアイデアは得られませんでした。無料である限り、問題を解決するためにライブラリなどを使用することに間違いなくオープンです。いくつかの有料ソリューションを見てきましたが、それらはオプションではありません。
また、レールと一緒にnode.jsを使用してリアルタイムで何かを行うことを誰かが提案しているのを見ました。node.js についてはよくわかりませんが、そのような非同期機能に適していると聞いたことがあります。どの Rails ソリューションよりも優れている場合は、その使用方法を学びたいと思います。
私は Rails 3.2 を使用していますが、Rails 4 でうまく機能するものがあれば、それにも興味があるでしょう。