node.jsアプリケーションを構築しています。ユーザーが接続すると、状態がオンラインとして送信されます。それらが切断されると、状態はオフラインに切り替わります。また、ユーザーが接続すると、接続のリストと、これらの友達の状態(オンラインまたはオフライン)が表示されます。わかりました、すばらしいです。これで問題ありません。
しかし、私が直面している問題は、ログイン中にユーザーの友達の状態を動的に送信する方法です。したがって、手順は次のようになります。
- ログインします。
- すべての友達のリストを取得します:user1、user2、user3
- すべてのユーザーの状態のリストを取得します:user1:online、user2:online user3:offline
- user1はログオフします
- ユーザー1の状態変化を動的に取得するにはどうすればよいですか?
これらのユーザーは相互に接続されていないことを忘れないでください。また、ユーザーの状態は、彼を友達として持っている他のすべてのユーザーに送信する必要があることも忘れないでください。user1には100人の友達がいて、私もその1人だとしましょう。私は(他の99人と一緒に)user1がオフラインになったことを通知する必要があります。また、これらのユーザーが同じ物理サーバー上にいない場合もあることに注意してください(複数のサーバーがそれぞれX個の接続を処理します)。この問題を解決するための最良の理論的方法は何ですか?
私が思いついた唯一の答えは、状態をDBに保存すると、そのノードがdbにクエリを実行し、状態が変化すると更新されるということです。しかし、ノードがデータベースへの変更を監視する必要があり、それがスケーリングできないのはおかしいようです。これを行うためのより良い方法が必要です-おそらくそれは明白な方法であり、私はそれを見逃しています。