2016-11-17 1 views
0

Supposons que pour un salon de discussion, je souhaite afficher pour l'utilisateur combien d'utilisateurs sont en ligne en ce moment (essentiellement combien de personnes regardent maintenant). Ce que j'ai pensé est d'utiliser un compteur redis pour chaque canal actioncable, incrémenter et décrémenter ce compteur quand un client est connecté ou déconnecté au canal, et là nous allons, mais le problème avec cette approche est que si la le client a ouvert une page Web, puis le compteur sera incrémenté, et si le serveur s'est arrêté pendant un certain temps et que ce client a fermé la page Web, l'événement déconnecté ne sera pas écouté, de sorte que le compteur ne sera pas décrémenté et sa valeur sera toujours fausse.Comment implémenter la fonctionnalité "regarder maintenant" pour une page Web dans Rails et actioncable

Je pense que cette approche peut être améliorée si je peux attraper l'événement lorsque le serveur est fermé afin que je mette tous ces compteurs à zéro, mais je ne sais pas comment attraper un tel événement (j'utilise nginx avec passager) . Donc, toute aide?

+0

Pourquoi ne pas simplement définir une date d'expiration pour le compteur redis, pour ce problème spécifique? –

Répondre

0

Il n'est pas facile de savoir quand le serveur est fermé, mais il est toujours facile de savoir quand le serveur est démarré. Pourquoi ne pas réinitialiser ces compteurs lorsque vous démarrez le serveur? Ajoutez l'opération de réinitialisation dans les scripts de démarrage du serveur.