Step through XEP-0060 nodes, subscriptions, item publishing, access models, persistence, and notification fan-out
animation
xmpp
protocols
pubsub
application-protocols
Learner-ready XMPP PubSub animation with scenario controls, step/play interaction, node access diagnosis, subscriber fan-out, XML stanza inspector, and mobile-ready reference support.
AnimationXMPPXEP-0060PubSub
XMPP PubSub Workbench
Follow one published item as an XMPP PubSub service checks the node, applies its access model, optionally stores the item, and sends event notifications only to matching subscribers.
ObserveLive subscribers receive the event; a later subscriber gets stored data only when persistence and access policy allow. Step confirms this readout.
ExplainA PubSub service validates node access, stores configured items, and fans notifications to eligible subscriptions rather than every JID. Step exposes this mechanism.
Technical boundariesThe model omits full XEP-0060 configuration, affiliations, item expiry, federation errors, ordering, storage quotas, and transport security.
Change the node policy and watch the same published item take a different path through the service.
Scenario
Playback
Node policy
Node inventory
Temperature fan-out
A room sensor publishes one reading to the temperature node. The pubsub service notifies dashboard, HVAC, and analytics subscribers.
Stage 1 of 5: select node
Delivery diagnosis
The node is open and persistent. Dashboard, HVAC, and Analytics are subscribed, so each receives an event message for the new temperature item.
Concept in focus
Publishers do not send directly to every consumer. The PubSub service owns node policy and notification fan-out.
Stanza Inspector
Read the XML associated with the current stage and scenario. The examples are shortened for learning, but keep the important XEP-0060 structure.
Publish IQ
A publisher sends an IQ set to the pubsub service. The publish element names the target node and wraps the item payload.
Technical Quick Reference
PubSub service
An XMPP entity such as pubsub.example.org that manages nodes, validates requests, stores items when configured, and sends notifications.
Node
A named collection point for items. It can have configuration such as access model, notification behavior, max items, and persistence.
Item
The published payload, usually wrapped in <item id="...">. Notifications deliver the item to subscribers as an event message.
Subscription
The relationship saying a JID wants notifications from a node. Subscriptions answer "who receives events?"
Affiliation
The longer-lived permission role on a node, such as owner, publisher, member, or outcast. Affiliations answer "who may manage or publish?"
Access model
Common models include open, authorize, whitelist, roster, and presence. Exact support and defaults depend on the XMPP server.
Use The Workbench To Check Understanding
Who receives the event?
Change the selected node and subscriber. If a JID is not subscribed or is blocked by policy, the publish still reaches the service but no event is delivered to that JID.
What changes with persistence?
Turn persistence off and replay a stored item. Without storage, late subscribers cannot learn the last value from the PubSub node itself.
What is not MQTT?
MQTT brokers route PUBLISH packets by topic filters. XMPP PubSub routes XML stanzas by service, node, JID, subscription, and server policy.
Model Boundaries And Sources
Simplified here
TLS, SASL, stream negotiation, service discovery, and error codes are not animated.
Only one publisher item is shown at a time.
Server-specific policy and persistence details are summarized.
Technical basis
XEP-0060 defines the XMPP publish-subscribe extension.
RFC 6120 defines XMPP core streams, stanzas, and routing foundations.
RFC 6121 defines instant messaging and presence behavior around rosters and presence.
Accuracy notes
Event notifications are shown as <message type="headline"> examples. Real deployments may use different message types, payload namespaces, node options, and authorization workflows.