So far we’ve seen how XMPP can be used to exchange one-to-one messages, participate in multi-user chat rooms, and send alerts and notifications. But what if text is not enough? Sometimes there is no replacement for voice, video, and other rich media interactions.
Enter Jingle, defined in XEP-0166 and a number of related specifications. After several years of experimentation, in 2005 the XMPP developer community finally got serious about adding support for voice chat, spurred on by the launch of Google Talk, an XMPP-based service for instant messaging and Voice over Internet Protocol (VoIP). In fact, the Google Talk team worked with developers in the community to define Jingle as a refinement of the Google Talk protocol (similar to the way in which XMPP is a refinement of the original Jabber protocol or Multi-User Chat is a refinement of the original groupchat protocol).
The original protocol deployed at the Google Talk service has some subtle differences from the protocol that has been formalized by the XMPP Standards Foundation (with many contributions from members of the Google Talk team and other developers). You can think of that original protocol as “Jingle 0.9,” but by the time you read this book, the version to implement will be “Jingle 1.0,” as published in the relevant XEPs.
Jingle provides a reliable mechanism for setting up voice calls over the Internet (see XEP-0167 for details). Even ...