Subscribe to our Erlang Factory newsletter to receive the latest updates and news

XMPP with Erlang - ejabberd and exmpp

an image Target Audience: Software Developers
Prerequisites: Participants should be at least a little familiar with Erlang
• Learn how to setup an XMPP server with ejabberd
• Learn how to write XMPP clients with exmpp
• Learn how to extend ejabberd to meet your needs
Goal: Use Erlang to create amazing XMPP-based applications
Duration: Three days
Registration: 08:30 on 21st March 2011.
Venue: Hilton San Francisco Airport Hotel.
Description: You will get an introduction to the ejabberd XMPP server and the exmpp client library. In addition, you will learn how to extend ejabberd to fit your own problem domain. In case you're new to XMPP, you'll get a refresher on the protocol and its applications

Course Contents:

Course Contents:

  • Introduction
  • XMPP Primer
  • Installation and Setup of ejabberd
  • Getting Started with exmpp
  • ejabberd Architecture
An introduction to the ways XMPP is used by various companies, both as a messaging solution for people and machines.

XMPP Primer
The architecture of XMPP networks will be explained along with comparisons to familiar systems like SMTP. Next, XMPP addresses(JIDs) will be covered. Finally, the basic building blocks of XMPP traffic, the stanzas, will be demonstrated in several contexts, followed by information about how XMPP stanzas are extended.

Installation and Setup of ejabberd
There are many choices possible with ejabberd in regards to database setup, authentication, and deployment. The basic database choices (SQL vs. Mnesia) will be covered along with the typical services in XMPP servers, including Web integration. Logs, debugging, and clustering will also be covered.

Getting Started with exmpp
exmpp is an XMPP client library written in Erlang. It will be used to create some basic XMPP client applications.

ejabberd Architecture
ejabberd is made up of many parts, and understanding these parts will help in building new applications or extensions. The main router, session manager, and the various hooks will all be covered.

Extending ejabberd
ejabberd is easily extended by writing Erlang code. This section covers customizing behavior, including authentication. It will also cover writing new XMPP services, web services, and adding server commands.


Jack Moffitt


Jack Moffitt is a hacker and entrepreneur based in Albuquerque, New Mexico. He has founded several start-ups built on XMPP technology including Chesspark, a real-time, multi-user gaming platform, and Collecta, a real-time search engine for the Web. Previously he founded the Foundation, an organization that works on building and standardizing royalty-free multimedia codecs for the Internet including Vorbis and Theora. He also created the Icecast streaming media server.

He is the author of Professional XMPP Programming with JavaScript and jQuery, a book about developing real-time web applications with XMPP technologies.

He is passionate about free software and open source, open standards, and Internet technology. His favourite programming languages include JavaScript, Erlang, and Python.

Jack's Blog

Twitter: @metajack