implementazione del servizio GAE XMPP come componente esterno su un server XMPP esistente (ad es. ejabberd o OpenFire)
-
10-07-2019 - |
Domanda
posso sapere quale tecnica di integrazione utilizzate da voi per implementare componenti esterni su un server XMPP esistente (ad es. ejabberd o OpenFire). Tramite l'invio del messaggio xmpp a un altro utente @ externaldomain direttamente o l'utilizzo di un meccanismo come urlfetch?
Soluzione
Google App Engine (Gae) supporta XMPP come CLIENT .
Con XMPP Client Gae JAVA puoi:
INVIA MESSAGGIO
JID jid = new JID("youraccount@jabber.org");
Message msg = new MessageBuilder()
.withRecipientJids(jid)
.withBody("Hello i'm a fancy GAE app, how are you?")
.build();
XMPPService xmpp = XMPPServiceFactory.getXMPPService();
if (xmpp.getPresence(jid).isAvailable()) {
SendResponse status = xmpp.sendMessage(msg);
}
RICEVE MESSAGGIO
public class XMPPReceiverServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException {
XMPPService xmpp = XMPPServiceFactory.getXMPPService();
Message message = xmpp.parseMessage(req);
JID fromJid = message.getFromJid();
String body = message.getBody();
//Save to Big Table
}
}
Ricorda che i JID possono essere solo yourappid@appspot.com O foo@yourappid.appspotchat.com perché i domini Google non sono ancora supportati.
Ad esempio, potresti creare un'applicazione Gae giocattolo con una semplice pagina con:
- Un modulo html per inviare testo
- Una tabella html che mostra l'elenco dei messaggi ricevuti e archiviati in una grande tabella.
Per testare la tua applicazione:
- Crea un account su jabber.org
- Scarica Smack
- Prova a inviare un messaggio da Smack a yourappid@appspot.com
- Prova a inviare un messaggio dall'app Gae al tuo account@jabber.org
Nel caso in cui il tuo server XMPP personale (openfire) sia attivo e in esecuzione, salta semplicemente il passaggio 1 e usa il tuo account di dominio per ricevere messaggi dalla tua app Gae di fantasia.
Dai un'occhiata a XMPP consegna dei messaggi per capire come funziona.
Altri suggerimenti
App Engine supporta un sottoinsieme molto limitato di XMPP. Fondamentalmente, puoi inviare messaggi (tramite l'API) e puoi ricevere messaggi (arrivano come richieste HTTP).
Potresti creare un componente esterno sul tuo server XMPP esistente, per inviare e ricevere messaggi con il codice del tuo motore di app. Tale componente dovrebbe tenere traccia di qualunque cosa tu voglia inviare e ricevere dalla tua app.