Home >Documents >XMPP Extensible Messaging and Presence Protocol. Chat In the beginning there was instant messaging...

XMPP Extensible Messaging and Presence Protocol. Chat In the beginning there was instant messaging...

Date post:27-Dec-2015
View:216 times
Download:1 times
Share this document with a friend
  • Slide 1
  • XMPP Extensible Messaging and Presence Protocol
  • Slide 2
  • 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.)
  • Slide 3
  • 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
  • Slide 4
  • Whats 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
  • Slide 5
  • Presence: Buddy List My status--available for IMs Buddies Off Line buddies
  • Slide 6
  • How Does XMPP Work? Wherefore art thou, Romeo?
  • Slide 7
  • 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
  • Slide 8
  • 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
  • Slide 9
  • XMPP The XML is sent as an open-ended stream. A stream starts with, then an open- ended series of,, and tags are sent. When the closing tag is sent, the underlying TCP connection is torn down
  • Slide 10
  • 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.
  • Slide 11
  • XMPP DeviceUser DeviceUser XMPP Communications
  • Slide 12
  • 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
  • Slide 13
  • 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.ukusername@fqhn.com jamesbond@mi6.gov.uk
  • Slide 14
  • 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 roomname@conference.machine.name Moves@conference.savage.nps.edu
  • Slide 15
  • 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 smith@googletalk.com (For firewall reasons this wont 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
  • Slide 16
  • Server-to-Server Local Chat Server Client Foo@local.com Remote Chat Server Client Bar@remote.com remote.com Local.com
  • Slide 17
  • Server-to-Server If the user isnt 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
  • Slide 18
  • 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 Ill show use the Smack 3.0 API available at http://www.igniterealtime.org/downloads/ind ex.jsp
  • Slide 19
  • Smack API // Creates a new connection, using TLS if possible. XMPPConnection connection = new XMPPConnection("savage.nps.edu"); connection.connect(); // Login connection.login("testuser", "foobar");
  • Slide 20
  • 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); }
Popular Tags:

Click here to load reader

Embed Size (px)