XMPP: The Definitive Guide

Book description

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.

Publisher resources

View/Submit Errata

Table of contents

  1. A Note Regarding Supplemental Files
  2. Preface
    1. Why XMPP?
    2. Is This Book for You?
    3. Getting the Most Out of This Book
    4. Conventions Used in This Book
    5. About the Examples
    6. Using Code Examples
    7. Safari® Books Online
    8. How to Contact Us
    9. Acknowledgments
      1. Peter Saint-Andre
      2. Kevin Smith
      3. Remko Tronçon
  3. I. An Overview of XMPP
    1. 1. Introduction
      1. What Can You Do with XMPP?
        1. Services
        2. Applications
      2. Brief History
      3. Open Source and Open Standards
      4. Extensibility
      5. Summary
    2. 2. Basics of XMPP
      1. Architecture
      2. Addresses
        1. Domains
        2. Users
        3. Resources
        4. Internationalization
        5. XMPP URIs
      3. Streaming XML
      4. Communication Primitives
        1. Message
        2. Presence
        3. IQ
        4. Extensibility
        5. Asynchronicity
        6. Error Handling
      5. Hello Hello World World: Building a Basic XMPP Application
      6. Summary
  4. II. The XMPP Toolkit
    1. 3. Presence
      1. Is Anybody Home?
      2. Authorization Required: The Subscription Handshake
      3. How Presence Is Propagated
      4. Availability Status
      5. Presence Priorities
      6. Directed Presence
      7. Going Offline
      8. Rich Presence
      9. Presence and Rosters
      10. Using Presence
        1. Presence-Based Routing
        2. Access Control
        3. Presence As a Transport
      11. Summary
    2. 4. Instant Messaging
      1. I Think, Therefore IM
      2. Chat Sessions
      3. Are You There? Chat State Notifications
      4. Looks Matter: Formatted Messages
      5. Who Are You? vCards
      6. Talk to the Hand: Blocking and Filtering Communication
        1. Blocking: The Simple Approach
        2. Advanced Blocking and Filtering
      7. More Messaging Extensions
      8. Summary
    3. 5. Discovering the World
      1. Items and Info
      2. Using Service Discovery with Servers and Services
      3. Using Service Discovery with Clients
        1. Explicit Service Discovery
        2. Entity Capabilities: Service Discovery Shorthand
      4. Summary
    4. 6. Data Forms
      1. Basic Structure
      2. Using Data Forms
      3. Defining Your Terms: Form Types
      4. Including Media in Data Forms
      5. Summary
    5. 7. Multi-Party Interactions
      1. Starting the Party
      2. Groupchat Basics
      3. Crowd Control
      4. What’s in a Nick?
      5. Configure This!
      6. Privacy, Security, and All That Jazz
      7. MUC As a Data Transport
      8. Summary
    6. 8. Publish/Subscribe
      1. Why It Matters
      2. Quickstart
      3. Subscriptions
      4. Publishing and Receiving Notifications
      5. Payloads: To Send or Not to Send?
      6. Items: To Store or Not to Store?
      7. Discovering Nodes
      8. Node Management
        1. Creating and Deleting Nodes
        2. Node Configuration
        3. Managing Node Access
        4. Item Aggregation via Collection Nodes
      9. Personal Eventing: PubSub Simplified
      10. Summary
    7. 9. Jingle: Jabber Does Multimedia
      1. To Instant Messaging and Beyond
      2. The Jingle Model
      3. Making a Call
      4. A Swarm of NATs
      5. Jingle on ICE
      6. Additional Jingle Actions
      7. Summary
    8. 10. Sending Binary Data
      1. Starting Small: Bits of Binary
      2. Moving On Up: Transferring Midsize Files In-Band
      3. Thinking Big: Sending Large Files Out-of-Band
        1. Sending Data Directly
        2. Sending Data Through a Proxy
      4. Negotiating File Transfer
        1. File Transfer Using Stream Initiation
        2. Session Negotiation Using Jingle
      5. Summary
    9. 11. Remote Commands
      1. Controlling Clients
        1. A Simple Command
        2. Commands and Data Forms
      2. Providing Custom Commands
      3. Advanced Workflows: SOAP, RPC, IO Data
      4. Summary
    10. 12. Connection Methods and Security
      1. Negotiating an XMPP Stream
      2. Authentication Options
      3. Encrypting the Connection
      4. Server Federation
      5. Server Components
      6. BOSH: XMPP over HTTP
      7. Serverless Messaging
      8. XMPP Security
        1. Encryption
        2. Authentication and Identity
        3. Spam and Abuse
      9. Summary
  5. III. Putting It All Together
    1. 13. Design Decisions
      1. Is XMPP the Right Choice?
      2. How the XMPP Community Works
      3. Writing XMPP Software
        1. Mixing, Matching, and Extending Existing XMPP Software
        2. Client Extension, Bot, Component, or Server Module?
        3. Rolling Your Own Client or Server
      4. Extending XMPP
        1. How to Design Custom Extensions
        2. Standardizing New Extensions
      5. Summary
    2. 14. Building an XMPP Application
      1. The CheshiR Microblogging Platform
      2. First Sprint: The CheshiR XMPP IM Bot
        1. Analysis
        2. Design
        3. Coding
      3. Second Sprint: Configuring the CheshiR XMPP IM Bot
        1. Analysis
        2. Design
        3. Coding
      4. Third Sprint: Scaling the CheshiR XMPP Service Using a Server Component
        1. Analysis
        2. Design
        3. Coding
      5. Fourth Sprint: Registering with the CheshiR Server Component
        1. Analysis
        2. Design
        3. Coding
      6. Fifth Sprint: Extending the Server Component with Rosters
        1. Analysis
        2. Design
        3. Coding
      7. Future Sprints
      8. A CheshiR Server Module or Dedicated Server?
      9. Summary
  6. IV. Appendixes
    1. A. A Guide to XMPP Specifications
      1. XMPP RFCs
      2. XMPP Extension Protocols
      3. Humorous XEPs
      4. XMPP Compliance Suites
    2. B. Popular Servers, Clients, and Libraries
      1. Servers
      2. Clients
        1. Cross-Platform (Linux, Mac OS X, Windows)
        2. Linux
        3. Mac OS X
        4. Windows
        5. Web Browsers
      3. Libraries
        1. ActionScript
        2. C
        3. C++
        4. C#
        5. Flash
        6. Java
        7. JavaScript
        8. Perl
        9. PHP
        10. Python
        11. Ruby
    3. C. Further Practical Considerations
      1. Getting Started
      2. Debugging Tools
      3. Network Setup
  7. Glossary
  8. Bibliography
  9. Index
  10. About the Authors
  11. Colophon
  12. Copyright

Product information

  • Title: XMPP: The Definitive Guide
  • Author(s): Peter Saint-Andre, Kevin Smith, Remko Tronçon
  • Release date: April 2009
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9780596521264