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?