XMPP tie bar

Document Sample
XMPP tie bar Powered By Docstoc
					            XMPP

Extensible Messaging and Presence
             Protocol
                         Chat
In the beginning there was instant messaging and chat.
Lots of binary standards:
Unix talk, IRC, AOL Instant Messaging (AIM) Yahoo,
   MS, etc.
The commercial implementations quickly tried to
   achieve user lock-in via proprietary protocols. (Aside:
   you make money in the computer industry by owning
   standards, such as the Windows API. If you own the
   standard you can lock other implementors out.)
                Better Way
Why not do something open standards that any
 one can implement.

Which is what XMPP is--open standard,
  published by the IETF, that uses XML to
  exchange information.
XML allows user-readability; the classic benefits
  of XML
              What’s Handled?
Presence: who is online right now? Are they willing to
   talk?
Instant Messaging: real-time communications between
   two or more users
   • “real time” roughly means that you see the text
   each time the user hits return
   • Some show each character as it is typed
Chat: groups of people exchanging information in a
   chat room
Information exchange: Since XMPP uses XML, we can
   exchange information that can be expressed in XML
            Presence: Buddy List

                                    My status--available for IMs



       QuickTime™ and a
                                     Buddies
   TIFF (LZW) deco mpressor
are neede d to se e this picture.

                                      Off Line buddies
     How Does XMPP Work?

<message   to='romeo@example.net'
           from='juliet@example.com/balcony'
           type='chat'
           xml:lang='en'>
  <body>Wherefore art thou, Romeo?</body>
</message>
                   XMPP Stanzas
There are three basic “stanzas” or elements in XMPP:
• message
• presence: “here I am. Tell all my subscribers about my status”
• iq: info/query, request/response
In addition these elements all have five common attributes defined
• to: JID of recipient
• from: JID of sender
• id: can be a unique ID assigned to each stanza
• type: varies by stanza
• xml:lang: used to specify human language
                     XMPP

Client                           Server

         TCP connection between client and
         server. Typically this is negotiated
         over SSL or TLS (a follow-on version
         of SSL) so that the traffic is encrypted
         and secure.

         XML stanzas are exchanged across
         this channel
                   XMPP
The XML is sent as an open-ended stream. A
  stream starts with <stream>, then an open-
  ended series of <presence>, <message>,
  and <iq> tags are sent.
When the closing </stream> tag is sent, the
  underlying TCP connection is torn down
 XML Communications Backplane
We can also add new XML to the existing
  standard to get new capabilities
You should think of XMPP not as strictly chat,
  but as an XML-enabled communications
  backplane
Anyone can subscribe to a server and receive
  XML messages from other users. We can use
  this as a way to do lots of things besides
  chat.
         XMPP

Device    User


                  XMPP Communications


Device     User
            Communications
You can place programs or devices that listen
  on an XMPP chat room or that exchange
  information directly.
Now there are devices or programs listening
  rather than humans
Can use XML to exchange data objects
You can also tie in XMPP with multimedia,
  including voice
The jingle API (included w/ smack) allows voice
                XMPP Basics
You have a client that connects to and
  authenticates to a server.
Users are uniquely identified by their JID, in the
  form username@fqhn.com, eg
  jamesbond@mi6.gov.uk
        Multi User Chat (MUC)
Multiuser chat is an add-on to the XMPP
  specification. It allows several users to be in a
  chat room.
The convention is for a chat server to have the
  DNS name “conference.machine.name”, eg
  conference.savage.nps.edu
The muc is identified by the jid
  roomname@conference.machine.name, eg
Moves@conference.savage.nps.edu
              Server-to-Server
Notice that a client connects to a local server, but the
  JID for a chat or muc may be on another machine
Example: you log onto savage.nps.edu, and you specify
  that you want to chat with someone at
  smith@googletalk.com
(For firewall reasons this won’t work right now.)
To do this, the server you have logged onto establishes
  a server-to-server connection to the machine
  specified in the JID
            Server-to-Server
       Local.com    remote.com

         Local      Remote
          Chat        Chat
         Server      Server




   Client                 Client
Foo@local.com         Bar@remote.com
            Server-to-Server
If the user isn’t on the same box that you
   logged onto, the server will contact the server
   the user is logged onto and pass the message
   to that server
The users do not need to be logged onto the
   same machine to chat with each other
                    APIs
What does it take to write an XMPP participant?
  It turns out, not very much.
The Smack API from Ignite Realtime lets you
  get up and running fairly quickly.
The examples I’ll show use the Smack 3.0 API
  available at
  http://www.igniterealtime.org/downloads/ind
  ex.jsp
                       Smack API

// Creates a new connection, using TLS if possible.
XMPPConnection
       connection = new XMPPConnection("savage.nps.edu");
connection.connect();

// Login
connection.login("testuser", "foobar");
                       Smack API
 MultiUserChat muc = new MultiUserChat(connection,
                        "moves@conference.savage.nps.edu" );
muc.join("studmuffin");

for(int idx = 0; idx < 10; idx++)
{
      muc.sendMessage("Hello world");
      Thread.sleep(1000);
}

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:11
posted:5/30/2011
language:English
pages:20