2013-04-27 9 views
3

J'ai une application qui a facebook login. Les utilisateurs ont une action qui affecte les autres utilisateurs. Je souhaite que les utilisateurs concernés soient avertis en temps réel, s'ils sont connectés, sinon ils devraient voir les notifications lors de leur prochaine connexion. J'utilise tornado (non bloquant) côté serveur. La base de données est mongodb. J'utilise motor en tant que client async mongodb et je pense que je voudrais utiliser socket.io. Jusqu'à présent, Voilà comment je pense que je devrais le faire:facebook comme les notifications avec tornado, mongodb

  1. Chaque fois qu'un utilisateur dit user1 effectue une action qui affecte user2, la ligne correspondant à user2 dans la collection users sera mise à jour d'une manière suffisante pour produire le contenu de la notification.

  2. Lorsqu'un utilisateur dit user2 se connecte au site Web, il se connecte via socket.io à un socket Web. Du côté serveur, à l'intérieur on_connect toutes les notifications stockées sont envoyées au client et un gestionnaire est installé qui surveille la ligne correspondant à user2 dans la collection users. Chaque fois qu'il détecte une modification, il envoie un message indiquant une nouvelle notification. En outre, en lisant une notification, le client enverra un message au serveur qui réinitialisera l'entrée dans la collection users. Ces gestionnaires doivent être désinscrits lors de la déconnexion. Les questions sont, comment installer ces gestionnaires?

La question est, comment installer ces gestionnaires? Je n'arrive pas à trouver un moyen pour que mongodb m'informe de tout changement. Comment puis-je faire cela?

+2

MongoDB n'a pas moyen standard de fournir des notifications de modification. Vous devez ajouter cela à votre code de couche de données. – WiredPrairie

Répondre