Question

Je vais essayer d’expliquer exactement ce que je veux réaliser en premier.

Imaginons que deux utilisateurs utilisent une application Windows Forms. Lorsque l'utilisateur A ouvre un formulaire particulier, un verrou est appliqué à l'enregistrement de données sous-jacent au formulaire afin que seul cet utilisateur puisse apporter des modifications à ce moment-là.

L'utilisateur B a une liste de tous les enregistrements (dans une grille) qui, entre autres, contient une référence à l'enregistrement déjà ouvert par l'utilisateur A. Ce que nous voulons faire, c'est lorsque l'utilisateur A ouvre les enregistrements. La liste des enregistrements de l'utilisateur B est mise à jour. pour afficher une icône de verrou à côté de la ligne pour indiquer que l'enregistrement est en cours d'utilisation.

Ceci est un exemple trivial de ce que nous faisons avec la messagerie mais vous obtenez l'idée: l'utilisateur A fait quelque chose que l'utilisateur B doit savoir à ce sujet.

J'ai mis en place un système utilisant Jabber-net pour C # et un serveur OpenFire Jabber. Fondamentalement, lorsqu'un message doit être envoyé, une nouvelle ligne est insérée dans une table de messages de la base de données. Un client du service surveille la table des messages à l'aide de l'objet SqlDependancy. Ainsi, lorsqu'un nouveau message est prêt, le service crée le message approprié et l'envoie au client souhaité via Jabber et le serveur OpenFire.

Cela fonctionne bien, mais la fonctionnalité prête à l'emploi d'OpenFire permet de prendre en charge la messagerie instantanée, ce qui n'est évidemment pas ce que j'essaie de réaliser. Le problème que j’ai, c’est que si un utilisateur est connecté à deux contextes d’application (à savoir Test et Live), OpenFire ne sait pas à qui envoyer un message, car la structure JID de l’utilisateur @ serveur / ressource ne prend pas connaissance de la ressource.

En gros, la façon dont j'utilise OpenFire et Jabber-net ne convient pas vraiment.

Existe-t-il un modèle que je peux utiliser pour réaliser ce que je veux réaliser, c'est-à-dire envoyer un message à un client lui disant de faire quelque chose, tout en permettant de spécifier le client auquel vous envoyez le message également. XMPP semblait être la solution car je peux créer mes propres types de messages à analyser.

Mon application est une application Windows Forms, .NET 3.5 C #.

Était-ce utile?

La solution

Je voudrais simplement ajouter quelques données supplémentaires pour indiquer quel contexte d'application est affecté et laisser les autres clients décider s'ils doivent ou non gérer le message.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top