Book Image

Practical XMPP

By : Steven Watkin, David Koelle
Book Image

Practical XMPP

By: Steven Watkin, David Koelle

Overview of this book

XMPP (eXtensible Messaging and Presence Protocol) is a messaging protocol that enables communication between two or more devices via the Internet. With this book, developers will learn about the fundamentals of XMPP, be able to work with the core functionality both server-side and in the browser, as well as starting to explore several of the protocol extensions. You will not only have a solid grasp of XMPP and how it works, but will also be able to use the protocol to build real-world applications that utilize the power of XMPP. By the end of this book, you will know more about networking applications in general, and have a good understanding of how to extend XMPP, as well as using it in sample applications.
Table of Contents (16 chapters)
Practical XMPP
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Free Chapter
1
An Introduction to XMPP and Installing Our First Server

Extending our echo bot


Now that we've built a simple bot, wouldn't it be nice if it were a bit more intelligent and useful? Let's extend our echo bot to do three additional things. First, we'll have it accept presence subscription requests so that users can see when the bot is online. We'll then tell it to get a result from DuckDuckGo's Instant Answers API (https://duckduckgo.com/api), and we'll implement chat state notifications so that it looks like the bot is thinking about the answer and responding.

Responding to presence subscription requests

In Chapter 2, Diving into the Core XMPP Concepts, we introduced presence subscriptions as a way of allowing other users to see your status or availability. To make it possible for other users to see the current availability of our bot, we'll automatically approve any presence subscription requests as they are received.

Recall that a presence subscription request looks as  follows:

<presence from="[email protected]/porch" to="[email protected]" type...