Synopses & Reviews
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.
The most complete and up-to-date guide to XMPP available, this practical book provides everything users need to know about this open network protocol for real-time communication.
About the Author
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.
Table of Contents
Preface; Why XMPP?; Is This Book for You?; Getting the Most Out of This Book; Conventions Used in This Book; About the Examples; Using Code Examples; Safari® Books Online; How to Contact Us; Acknowledgments; An Overview of XMPP; Chapter 1: Introduction; 1.1 What Can You Do with XMPP?; 1.2 Brief History; 1.3 Open Source and Open Standards; 1.4 Extensibility; 1.5 Summary; Chapter 2: Basics of XMPP; 2.1 Architecture; 2.2 Addresses; 2.3 Streaming XML; 2.4 Communication Primitives; 2.5 Hello Hello World World: Building a Basic XMPP Application; 2.6 Summary; The XMPP Toolkit; Chapter 3: Presence; 3.1 Is Anybody Home?; 3.2 Authorization Required: The Subscription Handshake; 3.3 How Presence Is Propagated; 3.4 Availability Status; 3.5 Presence Priorities; 3.6 Directed Presence; 3.7 Going Offline; 3.8 Rich Presence; 3.9 Presence and Rosters; 3.10 Using Presence; 3.11 Summary; Chapter 4: Instant Messaging; 4.1 I Think, Therefore IM; 4.2 Chat Sessions; 4.3 Are You There? Chat State Notifications; 4.4 Looks Matter: Formatted Messages; 4.5 Who Are You? vCards; 4.6 Talk to the Hand: Blocking and Filtering Communication; 4.7 More Messaging Extensions; 4.8 Summary; Chapter 5: Discovering the World; 5.1 Items and Info; 5.2 Using Service Discovery with Servers and Services; 5.3 Using Service Discovery with Clients; 5.4 Summary; Chapter 6: Data Forms; 6.1 Basic Structure; 6.2 Using Data Forms; 6.3 Defining Your Terms: Form Types; 6.4 Including Media in Data Forms; 6.5 Summary; Chapter 7: Multi-Party Interactions; 7.1 Starting the Party; 7.2 Groupchat Basics; 7.3 Crowd Control; 7.4 What's in a Nick?; 7.5 Configure This!; 7.6 Privacy, Security, and All That Jazz; 7.7 MUC As a Data Transport; 7.8 Summary; Chapter 8: Publish/Subscribe; 8.1 Why It Matters; 8.2 Quickstart; 8.3 Subscriptions; 8.4 Publishing and Receiving Notifications; 8.5 Payloads: To Send or Not to Send?; 8.6 Items: To Store or Not to Store?; 8.7 Discovering Nodes; 8.8 Node Management; 8.9 Personal Eventing: PubSub Simplified; 8.10 Summary; Chapter 9: Jingle: Jabber Does Multimedia; 9.1 To Instant Messaging and Beyond; 9.2 The Jingle Model; 9.3 Making a Call; 9.4 A Swarm of NATs; 9.5 Jingle on ICE; 9.6 Additional Jingle Actions; 9.7 Summary; Chapter 10: Sending Binary Data; 10.1 Starting Small: Bits of Binary; 10.2 Moving On Up: Transferring Midsize Files In-Band; 10.3 Thinking Big: Sending Large Files Out-of-Band; 10.4 Negotiating File Transfer; 10.5 Summary; Chapter 11: Remote Commands; 11.1 Controlling Clients; 11.2 Providing Custom Commands; 11.3 Advanced Workflows: SOAP, RPC, IO Data; 11.4 Summary; Chapter 12: Connection Methods and Security; 12.1 Negotiating an XMPP Stream; 12.2 Authentication Options; 12.3 Encrypting the Connection; 12.4 Server Federation; 12.5 Server Components; 12.6 BOSH: XMPP over HTTP; 12.7 Serverless Messaging; 12.8 XMPP Security; 12.9 Summary; Putting It All Together; Chapter 13: Design Decisions; 13.1 Is XMPP the Right Choice?; 13.2 How the XMPP Community Works; 13.3 Writing XMPP Software; 13.4 Extending XMPP; 13.5 Summary; Chapter 14: Building an XMPP Application; 14.1 The CheshiR Microblogging Platform; 14.2 First Sprint: The CheshiR XMPP IM Bot; 14.3 Second Sprint: Configuring the CheshiR XMPP IM Bot; 14.4 Third Sprint: Scaling the CheshiR XMPP Service Using a Server Component; 14.5 Fourth Sprint: Registering with the CheshiR Server Component; 14.6 Fifth Sprint: Extending the Server Component with Rosters; 14.7 Future Sprints; 14.8 A CheshiR Server Module or Dedicated Server?; 14.9 Summary; Appendixes; A Guide to XMPP Specifications; XMPP RFCs; XMPP Extension Protocols; Humorous XEPs; XMPP Compliance Suites; Popular Servers, Clients, and Libraries; Servers; Clients; Libraries; Further Practical Considerations; Getting Started; Debugging Tools; Network Setup; Glossary; Bibliography; Colophon;