Tech pages/PubSub
Overview
XMPP PubSub is a protocol extension for generic publish-subscribe functionality, specified in XEP-0060. The protocol enables XMPP entities to create nodes (topics) at a pubsub service and publish information at those nodes; an event notification (with or without payload) is then broadcasted to all entities that have subscribed to the node. Pubsub therefore adheres to the classic Observer design pattern and can serve as the foundation for a wide variety of applications, including news feeds, content syndication, rich presence, geolocation, workflow systems, network management systems, and any other application that requires event notifications. The personal eventing protocol (PEP), specified in XEP-0163, provides a presence-aware profile of PubSub that enables every user's Jabber ID to function as a virtual pubsub service for rich presence, microblogging, social networking, and real-time interactions.
Specifications
PubSub is defined in several specifications:
Payloads
PubSub and PEP are "payload-agnostic" -- you can use them as neutral transports for a wide variety of data formats. Some of the more popular payloads are listed below, especially for rich presence related to IM users:
- Activities
- Atom / RSS Notifications
- Avatars
- Chatroom Visits
- Gaming Activities
- Geolocation
- Moods
- Music Tunes
- TV/Video Activities
- Website Visits
Implementations
Servers
The following XMPP servers include built-in support for PubSub or PEP:
Server Components
- Idavoll
Clients
- Gajim
- Psi
- Movim (see the Wiki, protocol implementation)
- Salut à Toi
Libraries
- strophe (C or JavaScript)
- XMPP4R (Ruby)
- Smack (Java, JVM and Android)
Discussion Venues
The XMPP Standards Foundation maintains a dedicated email list (pubsub@xmpp.org) about PubSub, intended as a low-volume venue for discussion of PubSub implementation and protocol issues. As with all XSF technology lists, the pubsub@xmpp.org list is open to all interested individuals.
- Info page and subscription information
- Subscribe via email
- Discussion archives