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