最新の Juggernaut gem についてです (https://github.com/maccman/juggernaut)
アーキテクチャについて考えているのは、たとえば「ドット ゲーム」です。このメタゲームは非常に単純です。ログインしている各ユーザー (ジャガーノートに関しては、チャネルにサブスクライブしています) は、JS キャンバス上のランダムな色のドットです。ユーザーは自分のドットを任意の方向に移動できます。それでおしまい。
Juggernaut は、接続されているクライアントのすべてのデータを転送およびプッシュする必要があります。
現在、私はアーキテクチャを次のように想像しています。
1) クライアントはドットの座標とプレイヤーの ID ([1, [10,299]]) を ajax として Rails などにプッシュします。
2) Rails はこのデータを Juggernaut にプッシュします
3) Juggernaut は、このチャネルをリッスンするすべてのクライアントに座標をプッシュします。
Juggernaut.publish("coordinates_channel", [1, [10,299]])
問題:
1) js キャンバス上の「ドット」オブジェクトをピクセル単位で移動する必要がある場合、送信する AJAX 要求が多すぎます。たとえば、ドットが毎秒 20 ピクセル移動する場合、毎秒 20 のリクエストを送信する必要があります。受け入れられない。
2) Juggernaut.publish を非同期ループ (たとえば EventMachine を使用) にラップする必要がありますか? なぜなら、1000 のクライアント (1000 のドット、および更新された座標を持つデータの絶え間ない流れ) を想像してみてください...
それとも、Juggernaut gem を使用して間違ったクライアントサーバーを取得するのでしょうか? この実装についてどう思いますか?
ありがとうございました。