O'Reilly logo

Programming Google App Engine by Dan Sanderson

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Sending XMPP Messages

An App Engine application can send instant messages to users of XMPP-compliant chat services, including Google Talk and Jabber servers, using the XMPP service.

Each participant in an XMPP communication has an address similar to an email address, known as a JID. (JID is short for “Jabber ID,” named after the Jabber project, where XMPP originated.) A JID consists of a username, an “at” symbol (@), and the domain name of the XMPP server. A JID can also have an optional “resource” string, which is sometimes used to identify specific clients connected to the service with the username; a message sent to the ID without the resource goes to all connected clients.

username @ domain / resource

To send a message, a chat participant sends an XMPP message to its own XMPP server. The participant’s chat service contacts the recipient service’s host using the domain name of the JID and a standard port, then delivers the message. If the remote service accepts messages for the JID and someone is connected to the service with a chat client for that JID, the service delivers the message to the client.

Most services, including Google Talk, require that the user has established a previous relationship with a sender before it will route chat messages to the user. The user can establish this relationship with an App Engine app either by sending a chat invitation to the app, or by accepting a chat invitation sent by the app. App Engine applications can send chat invitations as well as ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required