Software Access to This Tutorial Application Development...

7
Ozgur Ozturk's Introduction to XMPP 1 1 XMPP Protocol and Application Development using Open Source XMPP Software and Libraries Ozgur Ozturk [email protected] Georgia Institute of Technology, Atlanta, GA Acknowledgement: This tutorial is based on the book “XMPP: The Definitive Guide, Building Real-Time Applications with Jabber Technologies” with permission from Peter Saint-Andre. 2 Access to This Tutorial Latest version of slides available on http://DrOzturk.com/talks Also useful for clicking on links 3 Start downloads now In the break you will have time to install Visual C# 2008 Express Edition http://www.microsoft.com/express/downloads/ Eclipse IDE for Java Developers (92 MB) http://www.eclipse.org/downloads/ Openfire & Spark Code: http://www.igniterealtime.org/downloads/source.jsp TortoiseSVN recommended for subversion check out http://tortoisesvn.net/downloads JabberNet code: http://code.google.com/p/jabber-net/ Software that you will need to repeat exercises with me 4 Part 1 Introduction to XMPP 5 What is XMPP Extensible Messaging and Presence Protocol open, XML-based protocol aimed at near-real-time, extensible instant messaging (IM), and presence information. Extended with features such as Voice over IP and file transfer signaling and even expanded into the broader realm of message-oriented middleware 6 Samples from its Usage IM and Social Networking platforms GTalk, and Facebook Collaborative services Google Wave, and Gradient; Geo-presence systems Nokia Ovi Contacts Multiplayer games Chesspark Many online live customer support and technical support services.

Transcript of Software Access to This Tutorial Application Development...

Ozgur Ozturk's Introduction to XMPP 1

1

XMPP Protocol

and

Application Development using

Open Source XMPP Software

and LibrariesOzgur Ozturk

[email protected]

Georgia Institute of Technology, Atlanta, GA

Acknowledgement: This tutorial is based on the book “XMPP: The

Definitive Guide, Building Real-Time Applications with Jabber

Technologies” with permission from Peter Saint-Andre.

2

Access to This Tutorial

• Latest version of slides available on

– http://DrOzturk.com/talks

• Also useful for clicking on links

3

• Start downloads now

– In the break you will have time to install

• Visual C# 2008 Express Edition– http://www.microsoft.com/express/downloads/

• Eclipse IDE for Java Developers (92 MB)– http://www.eclipse.org/downloads/

• Openfire & Spark Code:– http://www.igniterealtime.org/downloads/source.jsp

– TortoiseSVN recommended for subversion check out

• http://tortoisesvn.net/downloads

• JabberNet code:

– http://code.google.com/p/jabber-net/

Softwarethat you will need to repeat exercises with me

4

Part 1

Introduction to XMPP

5

What is XMPP

• Extensible Messaging and Presence Protocol

– open, XML-based protocol

– aimed at near-real-time, extensible

• instant messaging (IM), and

• presence information.

• Extended with features such as Voice over IP

and file transfer signaling

– and even expanded into the broader realm of

message-oriented middleware

6

Samples from its Usage

• IM and Social Networking platforms – GTalk, and Facebook

• Collaborative services – Google Wave, and Gradient;

• Geo-presence systems – Nokia Ovi Contacts

• Multiplayer games – Chesspark

• Many online live customer support and technical support services.

Ozgur Ozturk's Introduction to XMPP 2

7

Overview of Tutorial

• Introduction to XMPP

• IM and Presence requirements, XML Refresher

• XMPP Extension Protocols (XEPs)

• Hands on exercises/demonstrations of using some Open Source XMPP Libraries, Clients and Servers

• Architecture options & extending XMPP

• Talk slides, code and links will be available on http://DrOzturk.com/talks

8

SIMPLE (contender to XMPP)

• SIMPLE: SIP for Instant Messaging and

Presence Leveraging Extensions

• SIP: Session Initiation Protocol, established

signaling protocol for VOIP and IPTV

9

Advantages of XMPP

• Open XML standard formalized by IETF

– Extensible for new service or information types

– Implementations with modular/pluggable APIs

• Continuously extended through the standards

process of the XMPP Standards Foundation

• XMPP servers (via federation) form a

decentralized network similar to e-mail

– anyone (with a domain) can run an XMPP server

10

Some XMPP Terminology

• JabberID (JID): address of XMPP entities

– JIDs for users look like email addresses, composed

of username, “@” sign and the domain

– Bare JID + Resource Identifier = Full JID:

• e.g., [email protected]/web-9z2

• Routing traffic to one connection of user, web-client

rather than mobile or desktop client (which may be

simultaneously connected)

11

Three Types of XMPP Stanzas

• Stanza: Basic unit of communication in XMPP

• Libraries abstract away from the XML layer

– However to extend XMPP we need to know basics

• Three types of Stanzas:

– Message

• method for getting info from one place to another

– Presence

• availability and status messages of entities

– iq (Info/Query)

• request-response interactions and simple workflows

12

XML Basics

<?xml version="1.0" encoding="ISO-8859-1"?>

<CATALOG>

<CD>

<TITLE>Unchain my heart</TITLE>

<ARTIST NAME="Joe Cocker" />

<COUNTRY>USA</COUNTRY>

<COMPANY>EMI</COMPANY>

<PRICE>8.20</PRICE>

<YEAR>1987</YEAR>

</CD>

<!– Add more CD Albums here… -->

</CATALOG>

Terminology

• Entity, Tag

• Schema

• DTD, XSD

• Well-formed

• Valid

Attribute

• Not recommended for data.

• Prefer to use element:

<ARTIST>

<NAME> Joe Crocker </NAME>

</ARTIST>

• Recommended for metadata

Special Syntax for empty elements,

where closing tag would come

immediately after opening tag

Ozgur Ozturk's Introduction to XMPP 3

13

Sample XML Standard: POSLog

Namespaces are not

applied to attributes, unless you specify them explicitly.

Namespaces needed for combining multiple existing

vocabularies, to prevent conflict of names.

14

XML Namespaces

Not a URL, just a namespace!

15

Same Local Name,

Different Qualified Names

<bk:bookstore

xmlns:bk="urn:xmlns:dozturk.com:books">

<bk:book bk:title="Lord of the Rings, Book 3">

<book for=“Ozgur Ozturk“/>

</bk:book>

</bk:bookstore>

These two are from two vocabularies.

One of the <book> tags means reserving.

16

• The “push” method for getting information from one place to another

<message from="[email protected]/wz2"

to="[email protected]"

type="chat">

<body>How are you?</body>

<subject>Query</subject>

</message>

1: Message Stanza

from address

•not provided by sending client,

•stamped by the sender’s server •to avoid address

spoofing17

• Advertises the network availability and status

messages of entities

• A specialized publish-subscribe method;

people who requested subscription to your

presence and authorized by you receive

updated presence information when you

come online, and go offline, and change your

status

2: Presence Messages

18

<presence

from="[email protected]/android-z2">

<show>do not disturb</show>

<status>in a meeting</status>

</presence>

2: Presence Stanza

Ozgur Ozturk's Introduction to XMPP 4

19

3: IQ (Info/Query) Messages

• Structure for request-response interactions and simple workflows.

• Requests and responses are tracked using the id attribute

• type attribute included in the exchanged iqstanzas helps in establishing a structured IQ interaction between two entities

• Next example: IM client software gets my roster from its server and then updates it

20

<iq from="[email protected]/wz2"

id="rr82a1z7"

to="[email protected]"

type="get">

<query xmlns="jabber:iq:roster"/>

</iq>

3: IQ (Info/Query) Stanza

1/4: Requesting Roster

21

<iq from="[email protected]"

id="rr82a1z7"

to="[email protected]/wz2"

type="result">

<query xmlns="jabber:iq:roster">

<item jid="[email protected]"/>

<item jid="[email protected]"/>

</query>

• </iq>

3: IQ (Info/Query) Stanza

2/4: Server Returning Roster

22

<iq from="[email protected]/wz2"

id="ru761vd7"

to="[email protected]"

type="set">

<query xmlns="jabber:iq:roster">

<item jid="[email protected]"/>

</query>

</iq>

3: IQ (Info/Query) Stanza

3/4: Client adds a new contact.

New transaction, new id.

23

<iq from="[email protected]"

id="ru761vd7"

to="[email protected]/wz2"

type="result“/>

3: IQ (Info/Query) Stanza

4/4:Server’s Acknowledgement

Same id with request.

Each request needs a reply. Even if it is empty

24

15 Minute Break

Now is the time to install your software

When we are back we will code, yay!

Ozgur Ozturk's Introduction to XMPP 5

25

Part 2

Coding a Basic ClientWithout re-implementing the wheel:

Using Jabber-Net .Net Library

26

Download Link for

.Net XMPP library

• XMPP Library for .Net (written in C#)

http://code.google.com/p/jabber-net/

– I recommend to install from source code

• So you can trace into the library code upon errors

• I will show how to add components to toolbar manually

27

Download and install Jabber-Net

28 29

MyFirstClient project

30

Visual Studio Toolbox

with Jabber-Net

Ozgur Ozturk's Introduction to XMPP 6

31

Simplest Client App

Double Click

32

Five lines of code

• Automatically added events and function templates:

• Just fill in the action:

33

Voila! Our Weather Bot is Working

34

Part 3

XMPP Extension Protocols (XEPs)

35

Extensibility and

Available XEPs

• XMPP is an XML based, extensible protocol

• XMPP Standards Foundation (XSF)

standardizes extensions to XMPP through a

process centered around XMPP Extension

Protocols (XEPs)

– http://xmpp.org/extensions/

36

Data Forms XEP

• Specifies how a server sends the information necessary for a client to render a form

• Defines several common field types

– boolean,

– list options with single or multiple choice,

– text with single line or multiple lines,

– hidden fields, …

– & extensibility for future data types

• Related extension: CAPTCHA Forms XEP

Ozgur Ozturk's Introduction to XMPP 7

37

In-Band Registration XEP

• For in-band registration, password change or

cancellation of an existing registration

• Extensible via use of data forms

– enables services to gather a wide range of

information during the registration process

38

Multi-User Chat XEP

• To enable multiple XMPP users to exchange

messages in the context of a room or channel

– similar to Internet Relay Chat (IRC).

• Standard chat-room features such as room topics

and invitations

• A strong room control model, adds ability to:

– kick and ban users

– name room moderators and administrators

– require membership or passwords to join the room

39

Publish-Subscribe XEP &

Personal Eventing Protocol (PEP) XEP

• Presents a more generalized form of the publish/subscribe model than presence

– communicating “rich presence” such as moods

– exchanging “lifestreaming” data, such as microblogs

– also applied to storing personal data

• Bookmarks, client preferences…

• Further extensions of PEP

– User Tune, User Location, and User Activity XEPs

40

Multimedia Networking

Extensions: Jingle XEP

• XMPP as the signaling channel to negotiate,

manage & terminate media sessions

– voice/video chat, file transfer, screen sharing…

– negote media codecs, bitrates and other

parameters related to the voice format to be

used, deciding whether TCP or UDP will be used

– what IP addresses and ports will be used, etc

• Media data itself is sent either p2p or through

a media relay.

41

Part 4

Compiling and Customizing

Openfire XMPP Server

and Spark Chat Client

42

Download Links for

Client and Server with

Pluggable API• OpenFire: XMPP server

• Spark: XMPP client

• Both are open source Java implementation, with multi-platform support

• Openfire & Spark Code:– http://www.igniterealtime.org/downloads/source.jsp

– TortoiseSVN recommended for subversion check out

• http://tortoisesvn.net/downloads