現在、画像のリストを表示するRuby on Railsプロジェクトに取り組んでいます。
このプロジェクトの必需品は、Webページを更新する必要なく、リアルタイムで新しい投稿を表示することです。しばらく検索した後、PubNubなどのJavaScriptソリューションとサービスに出くわしました。ただし、提供されたソリューションはどれも意味がありません。
JavaScriptソリューション(ポーリング)では、次のことが起こります。
- ユーザー1が写真のリストを表示します。
- バックグラウンドでは、JavaScriptコードがエンドポイントを1秒ごとにポーリングして、新しい投稿があるかどうかを確認しています。
- ユーザー2が新しい写真を追加します。
- 新しいサイクルがトリガーされ、新しいデータを取得するまでに50ミリ秒の遅延があります。
- 新しいコンテンツがDOMにロードされます。
これは実世界の例に翻訳すると奇妙に思えます:
- ユーザー1は、自分の机に写真の山を持っています。
- 彼/彼女は毎秒カメラマンのところへ歩いて行き、彼が新しいものを持っているかどうか尋ねます。
- 写真家は新しい写真を作成します。
- 彼/彼女が中に入るとき、彼女は写真を撮り、それを山に置くことができます。
私の意見では、解決策は次のようにする必要があります:
- ユーザー1は、自分の机に写真の山を持っています。
- 写真家は新しい写真を撮ります。
- 写真家は山まで歩いて、残りの部分と一緒に置きます。
PubNubソリューションは基本的に同じですが、今回はデータを共有するために当事者間でのインターンがあります。
言うまでもなく、両方のソリューションは、ロードするデータがない場合でもトリガーされるため、非常にエネルギーを消費します。
私の知る限り、ほとんどすべてのリアルタイムアプリケーションでこの実装方法が使用されている理由(論理)は説明されていません。