XMPP- openfire, PHP e web service python

3

Sto pianificando di integrare le notifiche in tempo reale in un'applicazione web a cui sto lavorando attualmente. Ho deciso di utilizzare XMPP per questo server openfire selezionato che ritenevo adatto alle mie esigenze.

Il front-end usa la libreria strophe per recuperare le notifiche usando BOSH dal mio server openfire. Tuttavia, le notifiche sono le notifiche e altri messaggi devono essere pubblicati dalla mia applicazione e quindi penso che questo codice debba risiedere nel back-end. Inizialmente pensavo di andare con le librerie PHP XMPP come XMPHP e JAXL ma poi penso che questo causerebbe un sovraccarico dato che ogni script dovrà fare gli stessi passi come la connessione, l'autenticazione ecc. E penso che questo potrebbe far finire un po 'il PHP lento e non responsivo.

Ora sto pensando di creare un'applicazione middleware che agisca come un servizio web che PHP chiamerà e questa applicazione gestirà il servizio XMPP. Il vantaggio di questo è che questa app (un server se si vuole) dovrà connettersi solo una volta e si siederà lì ad ascoltare su una porta. Sto anche pensando di costruirlo in modo asincrono in modo tale che prima toglierà tutte le richieste dalla mia app PHP e poi quando non ci saranno più richieste; andare a fare le cose di pubblicazione delle notifiche. Sto pianificando di creare questo servizio in Python usando SleekXMPP.

Questo è proprio quello che ho pianificato. Sono nuovo di XMPP e di tutta questa roba del servizio web e vorrei prendere i vostri commenti su ciò che riguarda problemi come l'utilizzo della memoria e della CPU, vantaggi, svantaggi, problemi di scalabilità, sicurezza ecc.

PS: - anche se qualcosa del genere esiste già (anche se non ho trovato dopo un sacco di ricerche su Google) Per favore, dirigimi lì.

EDIT --- Il servizio di livello intermedio dovrebbe fare quanto segue (ma non limitato a): 1. Pubblicare notifiche per diversi livelli di gruppi e pagine della comunità. 2. Notifica per singolo utente su alcuni eventi. 3. Registrazione utente (può essere effettuata utilizzando il plugin del servizio utente).

EDIT --- Inoltre, sarebbe necessario creare nodi pub-sub e sottoscrivere e annullare l'iscrizione degli utenti da questi nodi secondari pub.

EDIT - Lavorare con Twisted-Python per sviluppare la parte dell'API REST ora (dovendo scegliere tra XML_RPC e REST) continuerà ad aggiornare questa domanda man mano che proseguo.

Inoltre voglio memorizzare le notifiche e i messaggi in un database (openfire no). Sarebbe una buona scelta?

    
posta mlakhara 11.12.2012 - 11:34
fonte

1 risposta

2

mentre mi piace l'idea di un server che funge da intermediario tra la tua app web e openfire, perché:

  • separa l'app web dalle notifiche.
  • consente di scalare separatamente dall'app Web.
  • rimanendo connesso utilizza meno risorse.

ci sono 2 cose che prenderei in considerazione:

  1. l'utilizzo di un linguaggio / ambiente diverso per la connessione a openfire può creare un notevole sovraccarico per la manutenzione e l'implementazione.
  2. la possibilità di utilizzare attività in background per spingere le notifiche a openfire (non rallenterà il tempo di risposta della tua app): vedere ad esempio: questa libreria php per una coda di lavoro in background
    consulta una discussione sull'overflow dello stack correlato here
risposta data 19.12.2012 - 21:19
fonte

Leggi altre domande sui tag