ウェブソケットやサーバー送信イベントなど、変更に応じてサーバーからクライアントにデータをプッシュする必要があります。 socket.ioは、このような機能を実装するための一般的なツールです。
socket.ioまたは特にウェブソケットを使用すると、クライアントが接続されているかどうかを追跡し、クライアントが接続するか、 が切断されるたびに追跡するデータベースにフラグを設定できます(クライアントは複数の接続
複数のステートレスWebサーバ(一般的なプラクティス)を使用していると仮定すると、クライアントが接続または切断すると、他のユーザに通知したいと考えていますRedis、zeromq、AWS SNS、GCP Cloud Pubsubなど多くの実装がありますが、を使用することもできますあなたのpubsubとして
しかし、これはサーバーとの接続が頻繁に行われる可能性があるため、スケーラビリティが損なわれる可能性があります。それがあなたのために高価であることが判明した場合、あなたのlastSeenAt
アプローチに何らかの正当なポーリングがあります。あなたはいくつかの実験を実行するだけで、あなたの設定でよりうまくいくかを知ることができます。
データベースの書き込みと要求が心配な場合は、いつでもサーバーを追加できます。あなたは、特にあなたのメインサーバーがそれほど大きな影響を受けないように、特にこれのためにデータベースを持つことができるように、これ専用のマイクロサービスを持つことができます。パフォーマンスが心配な場合は、インメモリ・データベースを使用できます。
シンプルな時間ベースの無効化を使用してサーバーにキャッシングを行うことも、pubsubパターンでサーバー間のオンライン/オフラインデータを同期することもできます。
設定をできるだけ簡単にすることをお勧めします。実験を実行して、予想されるトラフィックの処理方法を確認できます。