This practical book provides everything you need to know about the Extensible Messaging and Presence Protocol (XMPP). This open technology for real-time communication is used in many diverse applications such as instant messaging, Voice over IP, real-time collaboration, social networking, microblogging, lightweight middleware, cloud computing, and more.
XMPP: The Definitive Guide walks you through the thought processes and design decisions involved in building a complete XMPP-enabled application, and adding real-time interfaces to existing applications. You'll not only learn simple yet powerful XMPP tools, but you'll also discover, through real-world developer stories, how common XMPP "building blocks" can help solve particular classes of problems.
With this book, you will:
Learn the basics of XMPP technologies, including architectural issues, addressing, and communication primitives
Understand the terminology of XMPP and learn about the wealth of XMPP servers, clients, and code libraries
Become familiar with the XMPP concepts and services you need to solve common problems
Construct a complete business application or real-time service with XMPP
Every day, more software developers and service providers are using XMPP for real-time applications, and with the help of XMPP: The Definitive Guide, you can, too.
An Overview of XMPP
Chapter 1 Introduction
What Can You Do with XMPP?
Open Source and Open Standards
Chapter 2 Basics of XMPP
Hello Hello World World: Building a Basic XMPP Application
The XMPP Toolkit
Chapter 3 Presence
Is Anybody Home?
Authorization Required: The Subscription Handshake
How Presence Is Propagated
Presence and Rosters
Chapter 4 Instant Messaging
I Think, Therefore IM
Are You There? Chat State Notifications
Looks Matter: Formatted Messages
Who Are You? vCards
Talk to the Hand: Blocking and Filtering Communication
More Messaging Extensions
Chapter 5 Discovering the World
Items and Info
Using Service Discovery with Servers and Services
Using Service Discovery with Clients
Chapter 6 Data Forms
Using Data Forms
Defining Your Terms: Form Types
Including Media in Data Forms
Chapter 7 Multi-Party Interactions
Starting the Party
What’s in a Nick?
Privacy, Security, and All That Jazz
MUC As a Data Transport
Chapter 8 Publish/Subscribe
Why It Matters
Publishing and Receiving Notifications
Payloads: To Send or Not to Send?
Items: To Store or Not to Store?
Personal Eventing: PubSub Simplified
Chapter 9 Jingle: Jabber Does Multimedia
To Instant Messaging and Beyond
The Jingle Model
Making a Call
A Swarm of NATs
Jingle on ICE
Additional Jingle Actions
Chapter 10 Sending Binary Data
Starting Small: Bits of Binary
Moving On Up: Transferring Midsize Files In-Band
Thinking Big: Sending Large Files Out-of-Band
Negotiating File Transfer
Chapter 11 Remote Commands
Providing Custom Commands
Advanced Workflows: SOAP, RPC, IO Data
Chapter 12 Connection Methods and Security
Negotiating an XMPP Stream
Encrypting the Connection
BOSH: XMPP over HTTP
Putting It All Together
Chapter 13 Design Decisions
Is XMPP the Right Choice?
How the XMPP Community Works
Writing XMPP Software
Chapter 14 Building an XMPP Application
The CheshiR Microblogging Platform
First Sprint: The CheshiR XMPP IM Bot
Second Sprint: Configuring the CheshiR XMPP IM Bot
Third Sprint: Scaling the CheshiR XMPP Service Using a Server Component
Fourth Sprint: Registering with the CheshiR Server Component
Fifth Sprint: Extending the Server Component with Rosters
Peter Saint-Andre has been contributing to the Jabber/XMPP developer community since late 1999, where he has focused on technology standardization as author of the XMPP RFCs and numerous XMPP extension protocols. Since 2002 he has also served as Executive Director of the XMPP Standards Foundation.
Kevin Smith is currently Chair of the XMPP Council, having served as a Council member since 2006, and is also the co-author of several XMPP extensions. He has been the project leader on Psi, a popular open-source client for Jabber/XMPP communications since 2004, and has contributed to various other XMPP projects, covering code libraries, automated bots and assorted XMPP utilities.
Remko Troncon is the lead developer of the Psi Jabber/XMPP client, and a contributor to various other XMPP-related applications. He has been a member of the XMPP Standards foundation since 2004, co-authoring and contributing to several XMPP extensions. He holds a Ph.D. in Engineering (Computer Science) from the Katholieke Universiteit Leuven.
<The animal on the cover of XMPP: The Definitive Guide is a kanchil mouse deer. The kanchil (Tragulus kanchil) lesser mouse deer of Southeast Asia is the smallest of all ungulates. At a mature size, they can be as little as 45 cm (18 in) and 2 kg (4.4 lb). Another name for this little creature is chevrotain. In Indonesia, they are called kanchil ("KON-chil"), and in Malaysia, pelandok ("puh-LON-do"). There are nine species of chevrotains/mouse deer that make up the Tragulidae family.Mouse deer are small, secretive creatures, about the size of a cat, that live in the jungles of Africa, Asia, and many Pacific islands. They have the legs and tail of a deer and the face and body of a mouse (but they are neither really a mouse nor a deer).Mouse deer eat only plants, but lots of animals eat the mouse deer. To stay alive, they must be quick and smart. Young of lesser mouse deer are called fawns or asses. The females are called does, hinds, or cows and males are called bucks, stags, or bulls. A lesser mouse deer group is called a herd. They are the smallest known hoofed mammal. These are the average mouse deer's measurements: body length is 70-75 cm, shoulder height is 30-35 cm, and tail length is 8-10 cm.Mouse deer are shy and their fawn tend to be "hiders." They are solitary animals, and usually interact only to mate. The young are weaned at 3 months of age, and reach sexual maturity between 5 and 10 months, depending on the species. Parental care is relatively limited. Although they lack the types of scent glands found in most other ruminants, they do possess a chin gland for marking each other as mates or antagonists, and, in the case of the water mouse deer, anal and preputial glands for marking territory. Their territories are relatively small, but neighbors generally ignore each other, rather than competing aggressively.Mouse deer are active at night. During the day, they stay in deeply shaded spots, among the dense vegetations inside original forests. Mouse deer are difficult to find in the forest during the day, but at night, they roam around the cleared areas, sometimes close to the seashore. One can often find mouse deer along the roadsides at night using flashlights. Their eyes flash very brightly once caught in the beam and they normally stare for some time before fleeing.