Vous devez envoyer les données de votre serveur aux clients en cas de modification, avec quelque chose comme des connexions Web ou des événements envoyés par le serveur. socket.io est un outil populaire pour la mise en œuvre de manière fonctionnelle. Avec socket.io ou spécifiquement websockets vous pouvez suivre si un client est connecté ou non et avoir un drapeau dans la base de données qui suit chaque fois qu'un client se connecte ou déconnecte (gardez à l'esprit, le client peut avoir plusieurs connexions (plusieurs périphériques, ou même des onglets de navigateur), donc si une connexion se déconnecte il peut encore être en ligne
En supposant que vous aurez plusieurs serveurs Web sans état (pratique courante), puis une fois qu'un client se connecte ou se déconnecte, vous voulez en informer d'autres Pour les clients intéressés, vous devez utiliser un modèle pubsub pour notifier les autres serveurs qui notifieront respectivement leurs clients connectés.Il y a beaucoup d'implémentations telles que Redis, zeromq, SNS AWS, GCP Cloud Pubsub Vous pouvez même utiliser MongoDB with tailable cursors comme votre pubsub. Cependant, cela peut signifier beaucoup de connexions constantes à votre serveur, ce qui peut nuire à votre évolutivité. Si cela s'avère trop cher pour vous alors votre approche lastSeenAt
avec quelques interrogations saines. Vous pouvez trouver ce qui fonctionne le mieux avec votre configuration en exécutant quelques expériences.
Si la base de données écrit et demande des soucis, vous pouvez toujours y lancer plus de serveurs. Vous pourriez avoir un microservice spécifiquement pour cela afin que votre serveur principal ne soit pas affecté beaucoup et vous pourriez également avoir une base de données spécifique pour cela. Si les performances vous inquiètent, vous pouvez utiliser une base de données en mémoire.
Vous pouvez également avoir une mise en cache sur vos serveurs avec une simple validation basée sur le temps ou vous pouvez synchroniser les données en ligne/hors ligne entre vos serveurs avec un modèle pubsub.
Je suggérerais d'essayer de rendre votre configuration aussi simple que possible, et vous pouvez lancer des expériences pour voir comment il gère votre trafic attendu.