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 chat bot to work with an MUC


The next thing we're going to do is extend our chat bot to connect to the MUC room so that it can respond to group messages and private messages as well as continue to respond to one-to-one chat messages.

Now, as we know, MUC messages simply involve a change in type from chat to groupchat (or messages remain as chat but are delivered from an MUC JID in the case of a private message), so responding to messages should be easy. If receiving a group chat message, we'll probably want to add the sender's nickname in the response so that they know it's a response to them (most clients will flag a mention of the user's nickname to them) and only respond to queries that mention the bot's nickname. The only other task we then need to perform is joining the chat room in the first place.

The first thing we'll do is add another method call when the bot detects that it is online, and then send out a presence stanza in order to join the room:

client.on('online',...