Difference between revisions of "XMPP Programmer's Guide"

Jump to navigation Jump to search
m
 
m
Line 1: Line 1:
== Introduction ==
== Introduction ==
Welcome to Jabber Programmer's Guide. This wiki will help you to develop software for [http://xmpp.org/ XMPP] technologies.
Welcome to XMPP Programmer's Guide. This wiki will help you to develop software for [http://xmpp.org/ XMPP] technologies.


=== Mini-FAQ: Before we start there are some questions to clarify: ===
=== Mini-FAQ: Before we start there are some questions to clarify: ===
* '''What is Jabber/XMPP?'''
* '''What is XMPP?'''
: The architecture of the XMPP network is similar to email while a XMPP server conforms an email server ('''server.com''') and XMPP clients conforms email clients ('''user@server.com'''). The difference is that everything happens (by definition: nearly) in realtime over a persistent XML-TCP stream. In example this makes it possible that other (authorized) users can see your online presence. In addition to that servers can offer specialised services, in example a user directory ('''users.server.com''') or a weather agent ('''weather.server.com'''). XMPP is the architecture/protocol the network is based on.
: The architecture of the XMPP network is similar to email while a XMPP server conforms an email server ('''server.com''') and XMPP clients conforms email clients ('''user@server.com'''). The difference is that everything happens (by definition: nearly) in realtime over a persistent XML-TCP stream. In example this makes it possible that other (authorized) users can see your online presence. In addition to that servers can offer specialised services, in example a user directory ('''users.server.com''') or a weather agent ('''weather.server.com'''). XMPP is the architecture/protocol the network is based on.


* '''Is Jabber/XMPP the right protocol/thing for me?'''
* '''Is XMPP the right protocol/thing for me?'''
: Do you want to exchange information over a distributed network with many clients instantly? Do you want something like email in realtime? Then it will be a good choice.
: Do you want to exchange information over a distributed network with many clients instantly? Do you want something like email in realtime? Then it will be a good choice.


* '''What is the difference between Jabber and XMPP?'''
* '''What is the difference between Jabber and XMPP?'''
: Since 2004 XMPP is the IETF-approved instant messaging and presence protocol. XMPP is based on the Jabber protocol that evolves since 1998. Basically programming Jabber software today means programming XMPP compliant software.
: Since 2004, XMPP is the IETF-approved instant messaging and presence protocol. Jabber is the old name of XMPP that evolves since 1998.


* '''Is it commercial or opensource?'''
* '''Is it commercial or opensource?'''
: The Jabber/XMPP protocols are free, open, public, and easily understandable.
: The XMPP protocols are free, open, public, and easily understandable.


* '''What is a XEP?'''
* '''What is a XEP?'''
Line 22: Line 22:


* '''Do you have some tips and tricks for me?'''
* '''Do you have some tips and tricks for me?'''
: Yes, sure, goto [[Jabber Programmer's Tips and Tricks]].
: Yes, sure, goto [[XMPP Programmer's Tips and Tricks]].


== Existing Jabber/XMPP code libraries ==
== Existing XMPP code libraries ==
In many cases it will be sufficient to use one of the existing code libraries. Following this [http://xmpp.org/software/libraries.shtml link] you can find a list of available libraries for many platforms and programing languages. For programming beginners it is the best choice to use an existing XMPP code library.
In many cases it will be sufficient to use one of the existing code libraries. Following this [http://xmpp.org/software/libraries.shtml link] you can find a list of available libraries for many platforms and programing languages. For programming beginners it is the best choice to use an existing XMPP code library.


Line 36: Line 36:
# Knowledge about [http://en.wikipedia.org/wiki/XML XML] and character encodings like [http://en.wikipedia.org/wiki/UTF-8 UTF-8].
# Knowledge about [http://en.wikipedia.org/wiki/XML XML] and character encodings like [http://en.wikipedia.org/wiki/UTF-8 UTF-8].
# Knowledge about DOM and SAX.
# Knowledge about DOM and SAX.
# Read the [[Jabber Programmer's Tips and Tricks]].
# Read the [[XMPP Programmer's Tips and Tricks]].


== How to start ... ==
== How to start ... ==
First you must decide what you want to program. Basically you can program either a XMPP client, a XMPP server or a XMPP server component:
First you must decide what you want to program. Basically you can program either a XMPP client, a XMPP server or a XMPP server component:


* [[Programming Jabber Clients]]
* [[Programming XMPP Clients]]
: Choose this if you want to create a client program. This program can be a normal chat program but is not limited to it.
: Choose this if you want to create a client program. This program can be a normal chat program but is not limited to it.


* [[Programming Jabber Server Components]]
* [[Programming XMPP Server Components]]
: In case you want to develop a new service for XMPP go here. There are several ways to accomplish this.
: In case you want to develop a new service for XMPP go here. There are several ways to accomplish this.


* [[Programming/Extending Jabber Servers]]
* [[Programming/Extending XMPP Servers]]
: It is unlikely that you want to write a complete new server. It is more likely that you want to extend an extisting open source server project. Anyway here are some hints on how to start with this.
: It is unlikely that you want to write a complete new server. It is more likely that you want to extend an extisting open source server project. Anyway here are some hints on how to start with this.