Throughout this book, we talk about many varieties of XMPP entities: servers, clients, bots, chat rooms, pubsub nodes, etc. On the public XMPP network, all of these entities come in multiple flavors. For instance, there are at least half a dozen popular XMPP server implementations, and many more XMPP clients for just about every device and operating system. Furthermore, there are hundreds of possible features that an XMPP entity can support, including standardized protocols (to which the XMPP Standards Foundation is always adding), user-configurable options, client plug-ins, server modules, and more. And let’s not forget that many of these software projects are quite active, frequently releasing updated versions.
This diversity is tremendously powerful, but it raises two important questions:
How can you learn what entities are out there on the network?
Once you find them, how can you determine which XMPP features they support?
To answer these questions, you need service discovery (often called “disco” by XMPP developers).
When might you want to use service discovery? You might be learning a foreign language, so you want to find a chat room where you can practice; you might be interested in using a specific publish-subscribe mechanism, so you want to discover a pubsub service where that mechanism is supported; you might like to figure out whether one of your friends or colleagues has video chat capabilities; you might even want to announce to all your ...