Domanda

Cercherò di spiegare esattamente cosa voglio ottenere per primo.

Immagina che due utenti stiano utilizzando un'applicazione per moduli Windows, quando l'utente A apre un modulo particolare viene applicato un blocco al record di dati sottostante il modulo in modo che solo quell'utente possa apportare modifiche in quel momento.

L'utente B ha un elenco di tutti i record (in una griglia) che tra l'altro contiene un riferimento al record già aperto dall'utente A. Quello che vogliamo fare è quando l'utente A apre i record L'elenco dei record dell'utente B viene aggiornato per mostrare un'icona a forma di lucchetto accanto alla riga per indicare che il record è in uso.

Questo è un banale esempio di ciò che facciamo con la messaggistica, ma hai l'idea, l'utente A fa qualcosa che l'utente B deve sapere al riguardo.

Ho implementato un sistema usando Jabber-net per C # e un server Jabber OpenFire. Fondamentalmente quando un messaggio deve essere inviato, una nuova riga viene inserita in una tabella di messaggi nel database. La tabella dei messaggi viene controllata da un client di servizio utilizzando l'oggetto SqlDependancy, in modo che quando un nuovo messaggio è pronto il servizio crea il messaggio rilevante e lo invia al client desiderato tramite Jabber e il server OpenFire.

Funziona bene, tuttavia la funzionalità pronta all'uso di OpenFire è per supportare la messaggistica istantanea che ovviamente non è ciò che sto cercando di ottenere. Il problema che ho è che se un utente è connesso a due contesti applicativi (vale a dire Test e Live) OpenFire non sa a quale a cui inviare un messaggio perché la struttura JID dell'utente @ server / risorsa non si accorge della risorsa.

Fondamentalmente il modo in cui sto attualmente usando OpenFire e Jabber-net non è del tutto corretto.

Esiste un modello che posso usare per raggiungere ciò che voglio ottenere, cioè inviare un messaggio a un cliente che gli dice di fare qualcosa, pur essendo in grado di specificare anche a quale cliente stai inviando il messaggio. XMPP sembrava la risposta perché posso costruire i miei tipi di messaggi da analizzare.

La mia applicazione è un'applicazione Windows Form, .NET 3.5 C #.

È stato utile?

Soluzione

Aggiungerei solo altri dati per indicare quale contesto dell'applicazione è interessato e chiedere agli altri client se devono gestire il messaggio o meno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top