implementing GAE XMPP service as an external component to an existing XMPP server (e.g. ejabberd or OpenFire)
may i know what integration technique that you folks use to implement external component to an existing XMPP server (e.g. ejabberd or OpenFire) . Is it through sending xmpp message to another user@externaldomain 开发者_开发百科directly or using mechanism like urlfetch?
Google app engine (Gae) does support XMPP just as CLIENT.
With XMPP Gae JAVA client feature you can:
SEND MESSAGE
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);
}
RECEIVE MESSAGE
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
}
}
Remember that JIDs can just be yourappid@appspot.com OR foo@yourappid.appspotchat.com because Google domains are not supported yet.
For example, you could craft a toy Gae application with a simple page with:
- An html form to send text
- An html table that display the list of messages received and stored to big table.
To test your application:
- Create an account on jabber.org
- Download Smack
- Try to send a message from Smack to yourappid@appspot.com
- Try to send a message from Gae App to youraccount@jabber.org
In case you have your personal XMPP server (openfire) up and running, simply skip step 1 and use your domain account to receive message from your fancy Gae App.
Have a look to XMPP message delivery to understand how this works.
App Engine supports a very limited subset of XMPP. Basically, you can send messages (through the API), and you can receive messages (they come in as HTTP requests).
Java API
Python API
You could rig up an external component on your existing XMPP server, to send and receive messages with your app engine code. That component would have to keep track of whatever it is you want to send and receive from your app.
精彩评论